Проблема с календарем WPF Toolkit, вызванным из DataTemplate - PullRequest
1 голос
/ 06 декабря 2010

Я заметил серьезную проблему с управлением календарем WPF Toolkit. Это прекрасно работает, если я просто вызываю его с обычным встроенным XAML и устанавливаю DisplayDate в строку даты, например:

<toolkit:Calendar DisplayDate="12/6/2010"/>

Однако он никогда не учитывает параметр DisplayDate, когда я использую DataTemplate для отображения календаря. Вот пример:

<UserControl x:Class="Dashboard.Presentation.View.CalendarView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<UserControl.Resources>
    <DataTemplate DataType="{x:Type sys:DateTime}">
        <StackPanel Orientation="Vertical">
            <toolkit:Calendar DisplayDate="{Binding Path=.}" />
            <TextBlock Text="{Binding Path=.}"/>
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>
<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
    <ListBox.Items>
        <sys:DateTime>11/1/2010</sys:DateTime>
        <sys:DateTime>12/1/2010</sys:DateTime>
        <sys:DateTime>1/1/2011</sys:DateTime>
        <sys:DateTime>2/1/2011</sys:DateTime>
        <sys:DateTime>3/1/2011</sys:DateTime>
    </ListBox.Items>
</ListBox>

Я добавил TextBlock в DataTemplate, чтобы вы могли видеть, что Дата привязана правильно, просто не учитывается Календарем.

Это ошибка в календаре WPF Toolkit? Если так, как я могу это исправить? Или я что-то не так делаю с DataTemplates?

1 Ответ

0 голосов
/ 07 декабря 2010

Кажется, что это ошибка в элементе управления календаря. Он сбрасывает DisplayDate элемента управления в шаблоне данных где-то перед загруженным событием. Любой способ Сброс его в событии Loaded, кажется, делает свое дело. Попробуйте это

private void Calendar_Loaded(object sender, RoutedEventArgs e)

  {

      ((Calendar)sender).DisplayDate = (DateTime) ((Calendar)sender).DataContext;

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...