【发布时间】: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
标签: wpf data-binding datepicker inotifypropertychanged