【发布时间】:2012-08-19 05:18:48
【问题描述】:
我最近刚刚发现了一个问题的根源,该问题出现在我一直在处理的一个应用程序中,该应用程序使用传统的 WinForms MDI 和在 ElementHosts 中为每个表单托管的 WPF UserControls。问题是,如果用户更改了 TextBox 中的文本,该文本框是 TwoWay 绑定到 ViewModel 属性的,那么在单击工具栏中的“保存”按钮时,该属性上的设置器未设置。此行为的结果是没有保存最后设置的文本设置。
我正在使用 LostFocus 的默认 UpdateSourceTrigger 值,所以我相信当我单击工具栏中的基于 WinForms 的保存按钮时,WPF 文本框元素没有失去焦点。所以现在我理解了这个问题,我很好奇解决这个问题的正确或最佳方法是什么。
我能想到的两个主要选项要么需要手动提示更新设置器而不会导致控件失去焦点,要么只是让 TextBox 失去焦点以便进行正常的源更新。
【问题讨论】:
-
您可能会陷入休假或失去对 UserControl 的关注。
-
我会考虑这样做,但我相信这些事件也不会触发,因为就 WPF UI 基础架构而言,我仍然专注于 TextBox。
-
我已经涉足 WPF 中严重损坏的焦点范围实现,我不期待研究它,因为它可能是一个失败的原因,但我想知道是否有什么我可以触发当这些按钮被点击时,我可以以一种合理的方式手动转移焦点?
标签: wpf winforms data-binding focus mdi