Blu*_*eft 17 .net c# data-binding entity-framework winforms
绑定到嵌套属性很容易:
checkBox1.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty")); //Normal binding
checkBox2.DataBindings.Add(new Binding("Checked", bindingSource, "myProperty.innerProperty")); //Nested property
Run Code Online (Sandbox Code Playgroud)
但是,myProperty.innerProperty更改时,不会引发任何事件 - BindingSource永远不会收到更改通知.
我已经读过,解决方案是"确保当innerProperty对象引发PropertyChanged事件时,MyProperty包含的类innerProperty捕获事件并引发PropertyChanged自己的事件."
但是,实体框架并没有为我做这个,我宁愿不经历每个类的每个实例,并将自定义方法连接到每个导航属性,只是为了使我的类可绑定. 是否有一个体面的解决方法来使实体可绑定?
您必须在您的类上实现 INotifyPropertyCHanged。
你的财产应该看起来像这样。
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));
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否适用于 winforms。它适用于 WPF 和 Silverlight。
| 归档时间: |
|
| 查看次数: |
2493 次 |
| 最近记录: |