0

我最近刚刚发现了一个问题的根源,该问题发生在我一直在处理的应用程序中,该应用程序使用传统的 WinForms MDI 和每个表单的 ElementHosts 中托管的 WPF UserControls。问题是,如果用户更改了 TextBox 中的文本,该 TextBox 被 TwoWay 绑定到 ViewModel 属性,则在单击工具栏中的“保存”按钮时,该属性上的设置器未设置。此行为的结果是未保存最后设置的文本设置。

我正在使用 LostFocus 的默认 UpdateSourceTrigger 值,所以我相信当我单击工具栏中的基于 WinForms 的保存按钮时,WPF TextBox 元素没有失去焦点。所以现在我理解了这个问题,我很好奇解决这个问题的正确或最佳方法是什么。

我能想到的两个主要选项要么需要手动提示更新设置器而不会导致控件失去焦点,要么只是让 TextBox 失去焦点,以便进行正常的源更新。

4

1 回答 1

0

您可以将 UpdateSourceTrigger 更改为 PropertyChanged,然后“保存”按钮将很好地工作。

我认为你的推理是正确的。WPF 和 Winforms 都有单独的“Focusmanagers”,所以如果你从 WPF TextBox 转到 winforms 按钮,那么焦点无处可去。

于 2012-08-23T21:51:22.330 回答