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

时间:2013-07-30 07:43:01

标签: c# wpf

我有一些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

2 个答案:

答案 0 :(得分:1)

没有...... GetValue的声明返回类型只是object。如果值实际 a DateTime,您应该只能投射:

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

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

但是,使用SelectedDate属性可能更简单:

StartDate = StartOfferDatePicker.SelectedDate.Value;

.Value部分是因为SelectedDate属于Nullable<DateTime>类型。当然,如果没有选择日期,这将会爆炸 - 你应该考虑如何处理它。 (也许您的StartDate变量 也应该是Nullable<DateTime>。)

答案 1 :(得分:0)

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