2013-05-22 109 views
1

在我View.xaml我有必然視圖模型的日期財產WPF綁定的DatePicker不更新源

<DatePicker SelectedDate="{Binding Path=Date, Mode=TwoWay, Converter={StaticResource IfNullDateConverter}}" /> 

一個datepicker當View.xaml顯示「IfNullConverter」是用來轉換默認DateTime值「01.01。 0001「到DateTime.Now,所以DatePicker顯示當前日期。但實際上SelectedDate屬性沒有設置。爲什麼?

當我按下保存按鈕,傳遞給視圖模型的DatePicker的值仍然是「01.01.0001」。

請幫幫忙,我究竟做錯了什麼?如果日期爲「01.01.0001」,如何更新我的源代碼以傳遞當前日期?

IfNullDateConverter

DateTime dateValue = (DateTime)value; 
      if (dateValue.ToShortDateString() == "01.01.0001") 
      { 
       return DateTime.Now; 
      } 
      else 
      { 
       return value; 
      } 
+0

是你的觀點的DataContext設置? – shibormot

+0

是的,當我在DatePicker中手動選擇日期時,它會更新爲ViewModel。問題的關鍵在於,如果我不將它設置爲manualy,它不會在啓動時更新 –

回答

2

這是正確的行爲。你應該使用轉換器,當你想轉換源值(在VM中的日期),然後用新值設置desdination(SelectedDate)。這意味着當你轉換源值時,結果不會影響它,只是目的地。 結論:如果你想爲默認值DateTime.Now設置爲你的財產,你應該這樣做在你的虛擬機