【发布时间】:2014-04-12 21:45:24
【问题描述】:
我正在尝试在 WPF 应用程序中使用 .NET Entity Framework。我有一些模型类,根据各种属性,它们在某些列表中应该是可见或不可见的。对于单个属性 - 例如,bool 属性 - 我能够使用转换器将 bool 值转换为 Visibility - 到目前为止很好。
下一个挑战是我需要实现更复杂的操作来确定模型元素是否应该可见。一个典型的例子可能如下所示:
public bool IsVisibleInProjectView
{
get { return (!IsDeleted && IsSelectedForDisplay && Milestones.Any(ms => ms.IsVisibleInProjectView)); }
}
我能够将此方法添加到生成的部分类并使用绑定来影响可见性。然而,这有一个缺点:无论何时更改基础属性之一,都不会通知正在监听“派生属性”的人。我找到了几个建议手动触发 OnPropertyChanged 事件的答案,但是生成的 EF 类非常轻量级,似乎没有实现接口 INotifyPropertyChanged (还有吗?)似乎我在这里遗漏了一些东西 - 如果 EF实体不是发出通知的人,谁是?
我还尝试向模型添加计算属性(我使用的是模型优先方法),但基本上绕了一圈并遇到了同样的问题:我如何更新计算属性基础属性变化?
【问题讨论】:
-
如果你想这样做,遵循 MVVM 方法可能更容易。即拥有一个轻量级模型,并创建一个将实现 INPC 的 ViewModel 类。 viewmodel 类将负责发出通知。另一种选择是在 XAML 端使用具有多个数据触发器的样式来控制可见性。
-
@failedprogramming 你能推荐一个好的介绍或教程吗?我一直在寻找一些东西,但我发现的大部分东西要么过于简单,要么与 EF 根本无关......
标签: c# wpf entity-framework