2010-12-06 48 views
1

Je remarque un problème sérieux avec le contrôle du calendrier WPF Toolkit. Il fonctionne très bien si je viens de l'invoquons avec XAML en ligne normale et définissez les DisplayDate à une chaîne de date, comme ceci:Problème avec le calendrier WPF Toolkit invoqué à partir de DataTemplate

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

Cependant, il honore jamais le paramètre DisplayDate lorsque j'utilise un DataTemplate pour que le calendrier pour afficher . Voici un exemple:

<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> 

J'ai ajouté un TextBlock à la DataTemplate de sorte que vous pouvez voir que la date est liée correctement, il est tout simplement pas honoré par le calendrier.

Est-ce un bug dans WPF Toolkit Calendar? Si oui, comment puis-je le réparer? Ou est-ce quelque chose que je fais mal avec DataTemplates?

+0

Note à l'administrateur de stackoverflow: Mon message inclut au bas de mon second bloc de code, mais le site Web stackoverflow ne restitue pas cette balise de fermeture. – HugeHugh

+0

Utilisez-vous WPF4? – Guy

+0

J'aurais dû mentionner ma version. C'est le framework .Net 3.5 avec la version v3.5.50211.1 de WPF Toolkit (version de février 2010). L'utilisation de .Net framework 4.0 n'est pas une option pour ce projet. – HugeHugh

Répondre

0

semble être un bug avec le calendrier control.It remet à zéro le DisplayDate du contôle dans un DataTemplate quelque part avant le chemin de event.Any chargé Remise à zéro dans l'événement Loaded semble faire l'trick.Try ce

private void Calendar_Loaded(object sender, RoutedEventArgs e) 

    { 

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

    } 
+0

Merci de vérifier que c'est un bug. Votre solution de contournement est simple et fonctionne bien pour moi. – HugeHugh