2

我目前在编写 Metro 时遇到了这个问题,但我确信它适用于 WPF、Silverlight 甚至可能是 WinForms。

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

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

4

2 回答 2

1

听起来您想做一些业务逻辑,而不是让 GUI 更新文本框。我会将 设置Textbox为 only 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
}

这样,您就可以完全控制对象何时更新,并且可以应用您的业务规则。

于 2012-08-09T16:05:28.540 回答
0

在 TextBox 绑定上设置 UpdateSourceTrigger = PropertyChanged。 http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.100).aspx

于 2012-08-10T08:22:48.683 回答