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

Tre*_*van 4 .net c# forms winforms

我正在编写一个WinForms应用程序,并试图将.NET对象上的布尔属性绑定到Checkbox的"checked"属性.我成功创建了绑定,但是当我将source属性的值从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;
}
Run Code Online (Sandbox Code Playgroud)

例如,我能够成功地将text属性绑定到TextBox的值.但是,我不确定在绑定到"Checked"属性时我错过了什么.

Mar*_*ell 7

为此,源必须具有被触发的PreRunChangedevent(EventHandler),或者必须实现INotifyPropertyChanged(包括此属性).或者作为边缘情况,必须具有支持通知的自定义 PropertyDescriptor实现(但这是非常罕见的.

你的代码有PreRunChanged吗?它会在适当的时候被提升吗?

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