从 DataTemplate 调用 WPF 工具包日历时出现问题

发布于 2024-10-06 10:57:41 字数 1607 浏览 3 评论 0原文

我注意到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妖妓 2024-10-13 10:57:41

似乎是日历控件的一个错误。它在加载事件之前的某个数据模板中重置了控件的 DisplayDate。任何方式在加载事件中重置它似乎都可以解决问题。试试这个

private void Calendar_Loaded(object sender, RoutedEventArgs e)

  {

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

  }

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

private void Calendar_Loaded(object sender, RoutedEventArgs e)

  {

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

  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文