在我的 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属性。为什么呢?
当我按下Save按钮时,传递给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;
}
答案 0 :(得分:2)
这是正确的行为。如果要转换源值(VM中的日期),然后使用新值设置desdination(SelectedDate),则应使用转换器。这意味着当您转换源值时,结果不会影响它,只会影响目标。 结论:如果要为属性设置默认值DateTime.Now,则应在VM中执行此操作