【问题标题】:WPF bound DatePicker not updating sourceWPF 绑定的 DatePicker 不更新源
【发布时间】:2013-05-22 05:04:19
【问题描述】:

在我的 View.xaml 中,我有一个 DatePicker 绑定到 ViewModel 的 Date 属性

<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; 
            }

【问题讨论】:

  • 你的视图数据上下文设置了吗?
  • 是的,因为当我在 DatePicker 中手动选择日期时,它确实会更新为 ViewModel。问题是如果我不手动设置它,它不会在启动时更新

标签: wpf binding datepicker


【解决方案1】:

这是正确的行为。当您想要 转换 源值(VM 中的日期)然后使用新值设置目标(SelectedDate)时,您应该使用转换器。这意味着当您转换源值时,结果不会影响它,只会影响目标。 结论:如果你想为你的属性设置一个默认值 DateTime.Now,你应该在你的虚拟机中进行

【讨论】:

    猜你喜欢
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多