绑定(bind)到嵌套属性非常简单:
checkBox1.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty")); //Normal binding
checkBox2.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty.innerProperty")); //Nested property
但是,当 myProperty.innerProperty
发生更改时,不会引发任何事件 - BindingSource 永远不会收到更改通知。
我已经 read解决方案是 “确保当 innerProperty
对象引发 PropertyChanged
事件时,包含 的
捕获事件并引发它自己的 MyProperty
类innerPropertyPropertyChanged
事件。”
然而, Entity Framework does not do this for me ,并且我宁愿不遍历每个类的每个实例并将自定义方法连接到每个导航属性,只是为了使我的类可绑定(bind)。 是否有使实体可绑定(bind)的合适的解决方法?
最佳答案
你必须在你的类上实现 INotifyPropertyCHanged。
您的属性(property)应该看起来像这样。
private bool _checked;
public bool Checked
{
get { return _checked; }
set
{
if (value != _checked)
{
_checked = value;
OnPropertyChanged("Checked");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyCHanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
我不确定这是否适用于 winforms。它适用于 WPF 和 Silverlight。
关于c# - 使用 BindingSource 绑定(bind)到嵌套属性 - 或者,使实体可绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070990/