2012-08-09 34 views
2

我在编程Metro时遇到了这个问题,但我确定它适用于WPF,Silverlight甚至可能是WinForms。数据绑定更新前的事件触发 - 我该如何等待更新?

我有一个数据绑定文本框和附加到文本框的LostFocus事件的方法。当它失去焦点时,我希望后面的代码能够触发保存功能来保存数据。问题是在通过TwoWay数据绑定从GUI更新业务对象之前触发LostFocus事件。

处理这个问题的最佳方法是什么?有没有办法强制从LostFocus方法更新数据绑定(可能是平台特定的)?

回答

1

这听起来像你想要做一些业务逻辑,而不是让GUI更新文本框。我将Textbox设置为BindingMode.OneWay,以便在更改业务对象时正确更新文本框。

然后在LostFocus事件(WPF再次,但我想你会明白我的意思):

private void EditBoxLostFocus(object sender, KeyboardFocusChangedEventArgs e) 
{ 
    var textbox = sender as TextBox; 

    //update your business object w/ textbox.Text value 
    //other business logic 
} 

这样,你在当对象被更新的完整的掌控,并能应用的商业规则。

+0

这将工作。当我手动更新业务对象时,感觉就像我在DataBinding的土地上侵入一样。除非出现更好的情况,否则会接受答案。 – Nilzor 2012-08-09 16:21:21

+0

这取决于发生的情况。如果您正在进行验证或其他事情,那么这是更好的选择,因为这会阻止文本框将您的业务对象设置为无效。 – 2012-08-09 16:41:28