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

时间:2012-05-08 13:54:09

标签: c# silverlight datepicker

我对DatePicker有以下定义:

<sdk:DatePicker x:Name="dtpStartDate"
                Grid.Row="4"
                Grid.Column="1"
                SelectedDateFormat="Short"
                SelectedDate="{Binding MyObject.StartDate, Mode=TwoWay, NotifyOnValidationError=True}"/>

MyObject是一个包含StartDate的类,该DateTime被定义为可为空的class MyObjectClass { .... public DateTime? StartDate { get; set; } .... }

MyObject

我正在使用MVVM(通过Prism)并且this.MyObject = new MyObjectClass(); 被正确绑定。

我第一次显示此视图时,日期为空白(正如预期的那样),当我点击选择器时,日历会显示,今天的日期会突出显示。

如果我选择一个日期(今天除外)或显示填写日期的记录,那么当我将表单空白以创建新对象时:

StartDate

点击选择器时突出显示的日期是之前选择的日期。

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

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

2 个答案:

答案 0 :(得分:1)

解决方案是重置DisplayDate上的DatePicker属性:

        this.SelectedDateChanged += (s, e) =>
        {
            if (this.SelectedDate == null)
            {
                this.DisplayDate = DateTime.Today;
                this.Text = string.Empty;
            }
        };

要添加此功能,我们必须继承DataPicker

答案 1 :(得分:0)

不确定您是否刚从问题中解决了这个问题,但是如果您希望在UI上显示程序化更改,那么您的ViewModel和MyObjectClass  应该实现INotifyPropertyChanged。具体来说,VM的MyObject属性和MyObjectClass StartDate属性setter应该触发PropertyChanged事件。