【发布时间】:2011-07-01 13:20:57
【问题描述】:
绑定到嵌套属性很简单:
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 事件时,包含innerProperty 的MyProperty 类会捕获该事件并引发PropertyChanged 自己的事件。”
但是,实体框架does not do this for me,我宁愿不要遍历每个类的每个实例,并为每个导航属性连接一个自定义方法,只是为了使我的类可绑定。 是否有合适的解决方法使实体可绑定?
【问题讨论】:
-
这里有一些魔豆……啊,见鬼,我对你有感觉;让我放弃讽刺。这个问题没有灵丹妙药(或 bean)。最适合您的解决方案是使用 EF4 T4 模板并重写它们,以便 myProperty 侦听对 innerProperty 的更改。
-
唯一的方法是引入一些包装器类型,它们将封装 EF 类型并以您想要的方式传播更改通知。
-
您可能不想听到它,但不要绑定到您的实体。使用 MVVM 和 automapper 之类的东西来减少映射的乏味。我之前一直走在实体绑定的道路上,最终你的实体类中有太多支持 UI 的花言巧语,以至于手动映射 ViewModel 开始看起来很有吸引力。
-
您是否尝试过您引用的 MS Connect 问题中提到的解决方法? (connect.microsoft.com/VisualStudio/feedback/details/532257)
标签: c# .net winforms entity-framework data-binding