2013-03-28 87 views
0

为什么在另一个TextBox中单击不会引发当前(绑定)TextBoxLostFocus事件,从而将更改提交到数据源?我的UpdateSourceTrigger未设置,所以我假设默认情况下,WPF将在LostFocus上提交更改。LostFocus提交更改

当我使用Tab键而不是鼠标单击来做同样的事情时,我的更改得到了正确提交。

编辑

我刚发现点击出现在同一个父容器确实引起LostFocusTextBox ES和提交的变化,但是当我点击一个TextBox生活在我的屏幕主要ToolBar,那么它似乎显示出这种有问题的行为。

EDIT 2

虽然我标志着BastiOnWpf的职位如下正确的答案,我发现了一个同样好或更好的解决方案来解决这个问题。解决方案是简单设置

FocusManager.IsFocusScope="False" 

在您的ToolBar在XAML。

+0

您是否在视图中以任何方式使用FocusManager? – blindmeis 2013-03-28 08:14:11

+0

@blindmeis:是的,但仅用于在加载时将初始焦点设置为特定元素。另请参阅上面的我的编辑。 – dotNET 2013-03-28 08:59:23

回答

0

问题是,当文本框实际上确实如此,其实不是失去焦点,当菜单或其内容被点击/聚焦。 这是因为工具栏驻留在另一个UIContext中。

你当然可以改变UpdateSourceTriggerPropertyChanged,但是这并不总是可行的解决方法:

这里有一些方法来解决这个问题: Binding with UpdateSourceTrigger==LostFocus do not fire for Menu or Toolbar interaction

这也是为什么绑定的原因工具栏到当前UI的ViewModel不起作用。

+0

谢谢你。这正是问题所在,尽管我发现了一个不同的和IMO更简单的解决方案来解决这个问题。我在上面提到的网页上发布了我的解决方案,只是为了帮助未来的读者在一个地方找到它。我会将它标记为答案,因为它可以解决一般问题。 – dotNET 2013-03-28 11:33:25

+0

这是一个很好的解决方案。比那些更干净。 – Basti 2013-03-28 12:49:29