WPF绑定DatePicker不更新源

时间:2013-05-22 05:04:19

标签: wpf binding datepicker

在我的 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; 
            }

1 个答案:

答案 0 :(得分:2)

这是正确的行为。如果要转换源值(VM中的日期),然后使用新值设置desdination(SelectedDate),则应使用转换器。这意味着当您转换源值时,结果不会影响它,只会影响目标。 结论:如果要为属性设置默认值DateTime.Now,则应在VM中执行此操作