2012-05-08 97 views
3

我有一個DatePicker定義如下:Silverlight的SDK日期選擇器選擇日期不進行重置到今天

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

MyObject是包含被定義爲可空DateTimeStartDate類。

class MyObjectClass 
{ 
    .... 
    public DateTime? StartDate { get; set; } 
    .... 
} 

我正在使用MVVM(通過棱鏡)和MyObject被正確綁定。

我第一次顯示這個視圖時,日期是空白的(如預期的那樣),當我點擊選擇器時,日曆顯示,今天的日期高亮顯示。

如果我選擇一個日期(今天除外),或顯示與填充然後當我的空白表單創建一個新的對象日的記錄:

this.MyObject = new MyObjectClass(); 

日在突出顯示,當我點擊選擇器是之前選擇的日期。

因此,如果記錄顯示「2009年5月1日」,這將在選取器中突出顯示。我可以將StartDate設置爲DateTime.Today這是正確顯示,但確實意味着日期顯示在我不想要的形式。

那麼,爲什麼不將日期設置爲空將選擇器中的選定日期重置爲今天?

回答

1

的解決方案是將DisplayDate屬性重置的DatePicker

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

要添加此功能,我們必須繼承的DataPicker雖然。

0

不確定您是否剛剛將此問題留在您的問題中,但如果您希望程序化更改顯示在UI上,則您的ViewModel和MyObjectClass應實現INotifyPropertyChanged。特別是,VM的MyObject屬性和MyObjectClass StartDate屬性設置器應該觸發PropertyChanged事件。

+0

是的 - 我剛剛離開了它。一切都實現了'INotifyPropertyChanged'。正如我所說的將開始日期設置爲'Today'正確更新它。 – ChrisF

相關問題