【问题标题】:WinForms (C#) Databinding Object to Checkbox.Checked PropertyWinForms (C#) 数据绑定对象到 Checkbox.Checked 属性
【发布时间】:2011-02-20 03:10:45
【问题描述】:

我正在编写一个 WinForms 应用程序,并试图将 .NET 对象上的布尔属性绑定到 Checkbox 的“已选中”属性。我成功创建了绑定,但是当我将源属性的值从 false 更改为 true(我有一个可以切换它的按钮)时,复选框的“checked”属性不会反映该更改。

if (chkPreRun.DataBindings["Checked"] == null)
{
    Debug.WriteLine("Adding chkPreRun databinding");
    Binding _binding = chkPreRun.DataBindings.Add("Checked", NwmConfig, "PreRun")

    // Added this just to ensure that these were being set properly
    _binding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
    _binding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged;
}

例如,我能够成功地将 text 属性绑定到 TextBox 的值。但是,我不确定在绑定到“Checked”属性时缺少什么。

【问题讨论】:

    标签: c# .net winforms forms


    【解决方案1】:

    为此,源必须具有被触发的 PreRunChanged 事件 (EventHandler),或者它必须实现 INotifyPropertyChanged(包括此属性)。或者作为一个边缘案例,必须有一个 custom PropertyDescriptor 支持通知的实现(但这非常罕见。

    您的代码有 PreRunChanged 吗?是否在适当的时候提出?

    (UI 不会轮询更改;它只通过通知事件知道更改)

    【讨论】:

    • Marc,我没有你提到的事件处理程序,也没有实现 INotifyPropertyChanged。你的帖子至少为我指明了正确的方向。我可能应该对 DataBinding 做更多的阅读。感谢您的回答。 -特雷弗
    • 看起来 INotifyPropertyChanged 将完全满足我的需要。
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    相关资源
    最近更新 更多