【发布时间】:2012-10-10 05:07:19
【问题描述】:
好的。这似乎是一个非常基本的用例,但由于某种原因,我在寻找跨控件类型的通用解决方案时遇到了问题。
以下是用例:
向用户呈现一个带有任何可编辑控件的表单。 (文本框、组合、网格等)。
用户在控件中编辑一个值并跳出。
期望我可以连接到诸如 Lost Focus 之类的事件并使用更改的值执行“foo”。
然后,用户将焦点返回到控件并退出而不进行编辑。 期望是无论我连接到什么事件,我都可以检查值是否已更改。
控件中是否有一个通用事件仅在用户完成编辑时触发(例如 tab out 或 enter )并允许我检查先前状态与当前状态?
【问题讨论】:
-
你尝试过 LostFocus 和 KeyboardLostFocus 事件吗?
-
如果您使用绑定,您可以在绑定对象本身上使用属性NotifyOnSourceUpdated(或目标)。另一个处理表单数据的好方法是BindingGroups 和IEditableObject。但最好从 WPF 的基础开始。
-
我能想到的唯一同时显示先前值和当前值的事件是
TextBox的TextChanged事件。我强烈建议您将表单的DataContext设置为实现INotifyPropertyChanged的类,并将表单的控件绑定到该类的属性。这样,您可以处理代码中的任何更改逻辑,而不必尝试为它找出 XAML 事件。