我刚刚发现了我一直在使用的应用程序中发生的问题的根源,它使用传统的WinForms MDI和每个表单在ElementHosts中托管的WPF UserControls。问题是,如果用户更改了文本框中的文本,该文本框是TwoWay绑定到ViewModel属性,则单击工具栏中的“保存”按钮时未设置属性上的setter。此行为的后果是未保存设置的最后一个文本设置。
我正在使用LostFocus的默认UpdateSourceTrigger值,所以我相信当我点击工具栏中基于WinForms的Save按钮时,WPF TextBox元素不会失去焦点。所以现在我理解了这个问题,我很好奇解决这个问题的正确或最佳方法是什么。
我能想到的两个主要选项要么需要手动提示更新设置器而不会导致控件失焦,要么只是让TextBox松散焦点,以便进行正常的源更新。
答案 0 :(得分:0)
您可以将UpdateSourceTrigger更改为PropertyChanged,然后“保存”按钮将很好地工作。
我认为你的推理是正确的。 WPF和Winforms都有单独的“Focusmanagers”,所以如果你从WPF TextBox转到winforms按钮,那么焦点无处可去。