【问题标题】:Programatically setting a bound property as a result of selected value in another control由于另一个控件中的选定值,以编程方式设置绑定属性
【发布时间】:2011-11-16 10:56:05
【问题描述】:

我有一个 c# winforms 应用程序,其中包含许多不同的控件,这些控件(通过 bindingsource)绑定到我的业务对象的不同属性(并且该对象实现了 INotifyPropertyChanged)。当我的用户将某个控件设置为特定值时,我需要更改另一个属性的值(在代码中),甚至可能禁用绑定到该属性的控件。例如,我有一个映射到 datetime 属性的 datetimepicker。如果我的用户输入的时间值小于 00:10:00 (HH:MM:SS),我需要取消选中一个复选框(绑定到 bool 属性)。目前,我在验证事件处理程序中有代码,它查看 datetimepicker 中的值,如果 .Hour == 0 和 .Minute

如果我在调试器中查看 datetimepicker 的值,它会在这行代码执行后立即重置:

businessObject.booleanVariable = false;

在我以编程方式将布尔属性设置为 false 之前,我是否需要做一些事情来强制将 datetimepicker 值返回到对象属性?!?还是我对这一切都错了?是否有其他方法可以处理可能影响其他绑定控件的绑定控件?

【问题讨论】:

    标签: .net binding controls


    【解决方案1】:

    Validating 事件在数据被发送回绑定对象之前触发。其目的是允许您确保控件包含根据业务逻辑有效的数据,并且使用它来处理普通(非验证)逻辑会导致您看到的问题。

    最好的做法是在属性的 setter 中添加代码来设置 bool 属性。

    【讨论】:

    • 嗨,亚当。感谢您的建议。这是个好主意!
    • @user:很高兴听到它有帮助!
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2015-06-29
    • 2021-08-01
    • 1970-01-01
    • 2020-08-06
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多