【发布时间】:2015-12-29 16:17:10
【问题描述】:
我有一个包含多个用户控件的主窗口,这些用户控件排列为选项卡页和选项卡组(很像 Visual Studio 允许同时显示两个或多个编辑器)。
我还可以将这样的 UserControl 打开到单独的浮动窗口中。
其中一个用户控件包含简单的表单字段(例如文本框)。这些文本框与对象/属性的通用数据绑定绑定在一起。绑定模式是 OnValidation(不是 OnPropertyChanged)。
当我将焦点从主窗口中的此用户控件切换到主窗口中的另一个用户控件时,将自动执行验证并完成数据绑定/更改的文本将设置在有界的模型对象/属性上到那个文本字段。
但是,如果我将焦点切换到驻留在另一个(浮动)窗口中的 UserControl,则数据绑定未完成,因为未执行任何验证。
我知道我可以通过触发 ValidateChildren 等手动处理此问题,但这在我看来是错误的方式 / 是丑陋的。
是否有解决此问题的“正确”/干净的方法?我希望在 UserControl 失去焦点或窗口被停用时立即执行验证。
一个信息:我的 UserControls 上包含一个 TreeControl。如果我编辑树节点标签,并且当我将焦点切换到另一个(浮动)窗口时,标签编辑会自动完成。我想要有关绑定的常用表单字段的相应行为...
感谢您的帮助!
【问题讨论】:
标签: winforms validation data-binding focus