WPF + DatePicker + UpdateSourceTrigger = 显式
Posted
技术标签:
【中文标题】WPF + DatePicker + UpdateSourceTrigger = 显式【英文标题】:WPF + DatePicker + UpdateSourceTrigger = Explicit 【发布时间】:2015-01-06 11:57:09 【问题描述】:我有一个 datePicker,我已将它的 Text 属性绑定到一个视图模型。
我没有选择 UpdateSourceTrigger 作为 propertyChanged,而是使用 Explicit。 在 KeyDown 事件中,我调用了 binding.UpdateSource() 方法。
我面临的问题是,当我在文本框中输入值 30/10/1983 时,在视图模型中,我最终只有值 30/10/198。我没有得到最后输入的数字,除非我做了失焦或制表符。
当我输入第一个值 3 时,视图模型属性被通知为 NULL。
我应该订阅其他活动吗?
我做错了什么,有人可以帮忙吗?
另外,我在视图模型中使用字符串属性而不是 DateTime?这是正确的方法吗?
谢谢
【问题讨论】:
您在KeyDown
事件中做了什么要求您明确更新源?手头的问题是在 DatePicker 值更新之前调用了 KeyDown
事件,但我找不到之后引发的任何事件。
@hantoun 我也没有发现任何此类事件。我需要 datepicker 以 dd/mm/yyyy 的形式接受用户输入。此条目不会触发对视图模型的回发。但以 mm/dd/yyyy 格式输入日期会触发回发。
也许this question 可以帮助您找到您正在寻找的解决方案。如果我是你,我会尝试设置正确的 CultureInfo
而不是搞乱静态格式。在任何情况下,它都允许您绑定到DateTime
源。
@hantoun 我尝试更改字符串格式,但它对我不起作用,它仍然接受 mm/dd/yyyy 而不是 dd/mm/yyyy
【参考方案1】:
在 Dispatcher 中调用 binding.UpdateSource() 来完成这项工作。我的假设是 datePicker 仅在 TextChanged 事件之后更新值。因此,在 Dispatcher 调用中移动 binding.UpdateSource() 将解决您的问题。 http://msdn.microsoft.com/en-us/library/cc190824%28v=vs.110%29.aspx
【讨论】:
以上是关于WPF + DatePicker + UpdateSourceTrigger = 显式的主要内容,如果未能解决你的问题,请参考以下文章