0

我有一个绑定到 LLBLGen 实体的 WinForms 表单(虽然我认为这个问题不是特定于这个绑定源,但我提到它以防万一)。我的目标似乎很简单:根据其他字段的计算更新表单上的另一个字段。

我的问题是我想重用表单上其他地方使用的相同业务逻辑来执行此计算,因此我将绑定实体传递给业务逻辑层,以便对其进行处理。

我觉得奇怪的是,我在焦点链中找不到位置(请参阅:http: //msdn.microsoft.com/en-us/library/system.windows.forms.control.enter.aspx)可以以更新的形式使用绑定实体。计算执行得很好,但使用的是更新前的值。

过去,我通过从 .text 中获取值、验证它们是否可用并从那里开始来解决这个问题。我还使用“更新”按钮解决了这个问题:点击事件可以访问更新的值,即使我是从编辑值立即单击。

不过,我似乎遗漏了一些明显的东西:在事件链的某个地方,绑定值应该被更新,我应该能够在那里运行我的计算。

我的核心问题:我应该使用什么事件来访问 WinForms 中更新的绑定元素?

4

1 回答 1

1

考虑到我关心的是获取绑定数据更改,我停止计算 UI 事件并转而监听相关实体上的 PropertyChanged() 事件。这绕过了问题并且运行良好......并且可能是我应该首先做的事情。)

我暂时不回答这个问题;就焦点事件链而言,也许有人仍然对基本问题有答案。我没有用其他绑定源测试过这个解决方案,但由于 INotifyPropertyChanged 是数据绑定的基础,我怀疑该技术可以与其他数据源一起使用。

于 2011-03-31T20:58:26.897 回答