c# - 转换器无法将类型 'system.datetime' 的值转换为 Windows Phone 8.1 Datepicker 中的类型 'datetime'

标签 c# xaml mvvm datepicker windows-phone-8.1

我正在使用 MVVM 模式创建 Windows Phone 8.1 应用程序。我使用了 datepicker,我想在 viewModel 中获取 datepicker 的值(日期),因此我将其与 viewModel 中的属性绑定(bind)。运行此应用程序后,我在 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”(Name='null');目标属性是“日期”(类型“DateTime”)。

这是我的, Xaml View :

<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();
        }
    }

谁能帮我解决这个错误。

最佳答案

DatePickerDate 属性是一个DateTimeOffset ( MSDN )

这意味着您不能直接将它绑定(bind)到 DateTime 对象,因为不存在转换。但是,DateTimeOffset 有一个方便的属性,DateTime ( MSDN ) DateTime

所以只需将您的绑定(bind)更改为:

Date="{Binding Date.DateTime}"

或者绑定(bind) DateTimeOffset 属性并稍后自行转换。

关于c# - 转换器无法将类型 'system.datetime' 的值转换为 Windows Phone 8.1 Datepicker 中的类型 'datetime',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28438520/

相关文章:

c# - Caliburn.Micro 将 VM 设置为继承屏幕时,会覆盖 View 中的标题字段

c# - 比较两个列表并返回不匹配的项目结果错误

c# - WCF 服务拒绝错误服务器已拒绝客户端凭据

xaml - 使用模板10 MVVM在帧之间导航

wpf - 链接内容不适用于资源词典

c# - 需要帮助将事件驱动代码分成尊重 MVVM 模式的层

WPF 用户控件命令绑定(bind)到窗口 View 模型

c# - .net 抽象覆盖怪癖

c# - 如何在 Windows 8 的 Web View 中捕获导航事件?

c# - Datagrid.IsSelected 绑定(bind)和滚动