Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight SDK日期选择器未将所选日期重置为今天_C#_Silverlight_Datepicker - Fatal编程技术网

C# Silverlight SDK日期选择器未将所选日期重置为今天

C# Silverlight SDK日期选择器未将所选日期重置为今天,c#,silverlight,datepicker,C#,Silverlight,Datepicker,我对日期选择器有以下定义: MyObject是一个包含StartDate的类,StartDate定义为可为空的日期时间 我通过Prism使用MVVM,MyObject被正确绑定 第一次显示此视图时,日期按预期为空,当我单击选择器时,日历将显示,并突出显示今天的日期 如果我选择的日期不是今天,或者显示的记录中填写了日期,那么当我清空表单以创建新对象时: this.MyObject = new MyObjectClass(); 单击选择器时高亮显示的日期是以前选择的日期 因此,如果记录显示2009

我对日期选择器有以下定义:

MyObject是一个包含StartDate的类,StartDate定义为可为空的日期时间

我通过Prism使用MVVM,MyObject被正确绑定

第一次显示此视图时,日期按预期为空,当我单击选择器时,日历将显示,并突出显示今天的日期

如果我选择的日期不是今天,或者显示的记录中填写了日期,那么当我清空表单以创建新对象时:

this.MyObject = new MyObjectClass();
单击选择器时高亮显示的日期是以前选择的日期

因此,如果记录显示2009年5月1日,这将是在选择器中突出显示的内容。我可以将StartDate设置为DateTime.Today,这是正确显示的,但并不意味着日期以我不想要的形式显示


那么,为什么不将日期设置为null将选择器中选定的日期重置为今天呢?

不确定您是否只是在问题中忽略了这一点,但如果您希望编程更改显示在UI、ViewModel和MyObject类上
应实现INotifyPropertyChanged。具体来说,VM的MyObject属性和MyObject类StartDate属性设置程序应该触发PropertyChanged事件。

解决方案是在日期选择器上重置DisplayDate属性:


要添加此功能,我们必须对数据采集器进行子类化。

是的,我只是忽略了它。一切都实现InotifyProperty更改。正如我所说,将开始日期设置为今天可以正确地更新它。
this.MyObject = new MyObjectClass();
        this.SelectedDateChanged += (s, e) =>
        {
            if (this.SelectedDate == null)
            {
                this.DisplayDate = DateTime.Today;
                this.Text = string.Empty;
            }
        };