更新数据绑定之前的事件触发 - 如何等待更新?

时间:2012-08-09 15:55:23

标签: wpf silverlight data-binding microsoft-metro

我正在编程Metro时遇到这个问题,但我确信它适用于WPF,Silverlight甚至WinForms。

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

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

2 个答案:

答案 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