我有什么必须是典型的catch-22问题。我有一个.NET WinForm控件,其中包含一个文本框和一个复选框。两个控件都是绑定到数据类实例上的属性的数据。该文本框用于价格,该复选框用于指示价格是价格覆盖。同样在数据类别上的是一个拥有该项目原始价格的属性。我如何区分WinForm控件上的数据绑定和用户操作
我想进行控制以遵守以下规则:
- 当用户输入一个值到价格文本框,复选框被自动检查,以指示它们所覆盖的价格值
- 当复选框未被选中,项目的价格恢复到原始价格。
当用户取消选中该复选框,事件处理程序测试的选中状态,且该商品的价格属性设置为原来的价格值。但是,价格数据是数据绑定的,绑定事件被触发,它更新了文本框的值,这会触发文本更改的事件处理程序,它会重新检查复选框。
我试图捕捉条件,我明确更新会触发控件更改事件的东西。这只适用于它的一部分。文本框更改事件会触发我无法控制的其他时间,例如数据绑定在表单最初显示时触发。
我一直在寻找,我想我只是没有提出正确的搜索条件来找到我要找的东西。看起来,数据绑定是非常精彩而又漂亮的,直到你需要做一些实用的事情,比如让两个绑定的控件相互交互。似乎没有办法区分触发控制事件的方式。
我也查看了绑定源组件上可用的事件,但似乎没有任何更有用的事件。我可以处理绑定完成后触发的事件,但这是问题发生之后。
任何人有任何建议吗?
我在想数据绑定仍然可能会导致一个问题,因为它的更新如此之多。但是从我从BindingComplete事件的测试中看到的,这仍然可以工作。另外,它将规则放入数据模型中。我现在已经解决了这个问题,但如果可以的话,我会尝试。 – Peter 2008-10-16 12:16:26