我正在编程Metro时遇到这个问题,但我确信它适用于WPF,Silverlight甚至WinForms。
我有一个数据绑定TextBox和一个附加到TextBox的LostFocus事件的方法。当它失去焦点时,我希望后面的代码触发一个保存功能,以便持久保存数据。问题是LostFocus事件在通过TwoWay数据绑定从GUI更新业务对象之前触发。
处理此问题的最佳方法是什么?有没有办法从LostFocus方法强制更新数据绑定(可能是特定于平台的)?
答案 0 :(得分: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
}
通过这种方式,您可以完全控制对象何时更新,并可以应用您的业务规则。
答案 1 :(得分:0)
在TextBox绑定上设置UpdateSourceTrigger = PropertyChanged。 http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.100).aspx