我正在编写 WinForms 应用程序,并试图将 .NET 对象上的 bool 属性绑定(bind)到复选框的“选中”属性。我成功创建了绑定(bind),但是当我将 source 属性的值从 false 更改为 true 时(我有一个切换它的按钮),复选框的“checked”属性不会反射(reflect)该更改。
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;
}
例如,我能够成功地将文本属性绑定(bind)到 TextBox 的值。但是,我不确定在绑定(bind)到“Checked”属性时我遗漏了什么。
最佳答案
要使其工作,源必须具有正在触发的 PreRunChanged
事件 (EventHandler
),或者它必须实现 INotifyPropertyChanged
(包括此属性)。或者作为一种边缘情况,必须有一个支持通知的自定义 PropertyDescriptor
实现(但这非常罕见。
你的代码有 PreRunChanged
吗?它是否在适当的时候提出?
(UI 不会轮询更改;它只通过通知事件了解更改)
关于c# - WinForms (C#) 数据绑定(bind)对象到 Checkbox.Checked 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2844517/