转换器无法在 windows phone 8.1 Datepicker 中将类型“system.datetime”的值转换为类型“datetime”
Posted
技术标签:
【中文标题】转换器无法在 windows phone 8.1 Datepicker 中将类型“system.datetime”的值转换为类型“datetime”【英文标题】:Converter failed to convert value of type 'system.datetime' to type 'datetime' in windows phone 8.1 Datepicker 【发布时间】:2015-04-10 21:21:00 【问题描述】:我正在使用 MVVM 模式创建一个 windows phone 8.1 应用程序。我使用了 datepicker,我想在 viewModel 中获取 datepicker 的值(日期),所以我将它与 viewModel 中的属性绑定。运行此应用程序后,我在 Visual Studio 的输出窗口中收到错误。
错误:转换器无法将类型“System.DateTime,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e”的值转换为类型“DateTime”; BindingExpression: Path='Date' DataItem='App1.ViewModel.MainViewModel';目标元素是'Windows.UI.Xaml.Controls.DatePicker'(名称='null');目标属性是“日期”(输入“日期时间”)。
这是我的, Xaml 视图:
<DatePicker Grid.Row="1" Grid.Column="1"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
HorizontalAlignment="Left"
VerticalAlignment="Center" Margin="26,-0.333,0,0.5"
Date="Binding Date"
/>
ViewModel 属性:
private DateTime _date;
public DateTime Date
get return _date;
set
_date = value;
RaisePropertyChanged();
谁能帮我解决这个错误。
【问题讨论】:
【参考方案1】:DatePicker
的 Date
属性是 DateTimeOffset
(MSDN)
这意味着您不能直接将其绑定到DateTime
对象,因为不存在转换。但是,DateTimeOffset
有一个方便的属性,DateTime
(MSDN) 是 DateTime
。
所以只需将您的绑定更改为:
Date="Binding Date.DateTime"
或绑定DateTimeOffset
属性并稍后自行转换。
【讨论】:
感谢@BradleyDotNet!我已将属性更改为 DateTimeOffset 并且错误现在已经消失。但是我现在得到的财产的价值是 1/1/0001 12:00:00 AM +00:00。你能告诉我如何获取当前日期吗? @UtsavDawn 表示未设置的值。用户还没有选择日期吗? 我刚刚检查了一下,发现用户从日期选择器中选择了一个值,但我仍然得到相同的值。 @UtsavDawn 您是否将模式设置为TwoWay
? IIRC WP 中的默认绑定模式是“OneWay”
感谢TwoWay
成功!另一件事是日期选择器上的默认日期显示 1/1/1915。您能告诉我如何将其设置为当前日期吗?以上是关于转换器无法在 windows phone 8.1 Datepicker 中将类型“system.datetime”的值转换为类型“datetime”的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 8.1 后台任务 - 无法调试且不会触发
我无法将套接字 io 与 windows phone 8.1 C# 连接
Windows Phone 8.1中的ContentDialog无法正常关闭,即使它已隐藏