我最近刚刚发现了一个问题的根源,该问题发生在我一直在处理的应用程序中,该应用程序使用传统的 WinForms MDI 和每个表单的 ElementHosts 中托管的 WPF UserControls。问题是,如果用户更改了 TextBox 中的文本,该 TextBox 被 TwoWay 绑定到 ViewModel 属性,则在单击工具栏中的“保存”按钮时,该属性上的设置器未设置。此行为的结果是未保存最后设置的文本设置。
我正在使用 LostFocus 的默认 UpdateSourceTrigger 值,所以我相信当我单击工具栏中的基于 WinForms 的保存按钮时,WPF TextBox 元素没有失去焦点。所以现在我理解了这个问题,我很好奇解决这个问题的正确或最佳方法是什么。
我能想到的两个主要选项要么需要手动提示更新设置器而不会导致控件失去焦点,要么只是让 TextBox 失去焦点,以便进行正常的源更新。