从 DataTemplate 调用 WPF 工具包日历时出现问题
我注意到 WPF Toolkit 日历控件存在严重问题。如果我只是使用正常的内联 XAML 调用它并将 DisplayDate 设置为日期字符串,则效果很好,如下所示:
<toolkit:Calendar DisplayDate="12/6/2010"/>
但是,当我使用 DataTemplate 导致日历显示时,它从不支持 DisplayDate 参数。这是一个例子:
<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>
我已在 DataTemplate 中添加了一个 TextBlock,以便您可以看到日期已正确绑定,只是日历不支持它。
这是 WPF Toolkit 日历中的错误吗?如果是这样我怎样才能解决这个问题?或者这是我对 DataTemplates 做错了什么?
I'm noticing a serious issue with WPF Toolkit Calendar control. It works fine if I just invoke it with normal inline XAML and set the DisplayDate to a date string, like this:
<toolkit:Calendar DisplayDate="12/6/2010"/>
However, it never honors the DisplayDate parameter when I use a DataTemplate to cause the Calendar to display. Here's an example:
<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>
I have added a TextBlock to the DataTemplate so you can see that the Date is being bound properly, it is just not honored by the Calendar.
Is this a bug in WPF Toolkit Calendar? If so how can I get this fixed? Or is this something I'm doing wrong with DataTemplates?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
似乎是日历控件的一个错误。它在加载事件之前的某个数据模板中重置了控件的 DisplayDate。任何方式在加载事件中重置它似乎都可以解决问题。试试这个
Seems to be a bug with the calendar control.It resets the DisplayDate of the contol in a datatemplate somewhere before the loaded event.Any way Resetting it in the Loaded event seems to do the trick.Try this