WinForms (C#) 数据绑定对象到 Checkbox.Checked 属性

4

我正在编写一个WinForms应用程序,试图将.NET对象上的布尔属性绑定到复选框的“checked”属性。我成功地创建了绑定,但当我将源属性的值从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;
}

我可以成功将文本属性绑定到 TextBox 的值上,但是对于“Checked”属性的绑定,我还不确定自己漏掉了什么。

1个回答

7
为了使此功能正常工作,源必须具有要触发的PreRunChanged事件(EventHandler),或者它必须实现INotifyPropertyChanged(包括此属性)。或者作为一个特例,必须具有支持通知的自定义PropertyDescriptor实现,但这非常罕见。
您的代码是否有PreRunChanged?它是否在适当的时间被触发?
(UI不会轮询更改;它只通过通知事件了解更改)

Marc,我没有你提到的事件处理程序,也没有实现INotifyPropertyChanged。至少你的帖子指引了我正确的方向。我应该多读一些关于数据绑定的内容。感谢你的回答。-Trevor - user189198
1
看起来 INotifyPropertyChanged 恰好能够满足我的需求。 - user189198

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接