gpt4 book ai didi

c# - 使用 BindingSource 绑定(bind)到嵌套属性 - 或者,使实体可绑定(bind)

转载 作者:可可西里 更新时间:2023-11-01 03:02:24 25 4
gpt4 key购买 nike

绑定(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 类innerProperty 捕获事件并引发它自己的 PropertyChanged 事件。”

然而, 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com