1

私のView.xamlには、ViewModel の Date プロパティにバインドされた DatePicker があります。

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

View.xaml が表示されている場合、「IfNullConverter」を使用してデフォルトの DateTime 値「01.01.0001」を DateTime.Now に変換するため、DatePicker は現在の日付を表示します。しかし、実際には SelectedDate プロパティは設定されていません。なんで?

[保存] ボタンを押しても、ViewModel に渡される DatePicker の値は "01.01.0001" のままです。

助けてください、私は何が間違っていますか? 日付が「01.01.0001」の場合、現在の日付を渡すようにソース コードを更新するにはどうすればよいですか?

IfNullDateConverter

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

1 に答える 1

2

This is the right behavior. You should use converter when you want to convert the source value( Date in VM) and then set desdination(SelectedDate) with the new value. Which means that when you convert the source value, the result doesnt affect it, just the destination. Conclusion : if you want to set a default value DateTime.Now to your property, you should do it in your VM

于 2013-05-22T14:37:36.330 に答える