无法使用Dispatcher从DatePicker读取DateTime.调用C#

本文关键字:读取 DateTime 调用 DatePicker Dispatcher | 更新日期: 2023-09-27 18:25:31

我有一些Windows Framework Presentation应用程序。

由后台工作人员完成的所有操作。我正在尝试获取选定的日期。

DateTime StartDate = DateTime.MinValue;
StartOfferDatePicker.Dispatcher.Invoke(
    new Action(delegate()
    {
        StartDate = StartOfferDatePicker.GetValue(DatePicker.SelectedDateProperty);
    }
));

我得到错误Can not imlicitly convert an 'object' to System.DateTime

无法使用Dispatcher从DatePicker读取DateTime.调用C#

不…GetValue的声明返回类型只是object。如果值实际上DateTime,那么您应该能够投射:

StartDate = (DateTime) StartOfferDatePicker.GetValue(DatePicker.SelectedDateProperty);

请注意,这与Dispatcher.Invoke无关。如果在事件处理程序中有相同的代码,您会看到完全相同的问题。

然而,只使用SelectedDate属性可能更简单:

StartDate = StartOfferDatePicker.SelectedDate.Value;

.Value部分是因为SelectedDate属于Nullable<DateTime>类型。当然,如果没有选择日期,这会很成功——你应该考虑一下你想如何处理。(也许您的StartDate变量也应该是Nullable<DateTime>。)

您可以使用StartDate = StartOfferDatePicker.SelectedDate.Value.Date;