2

我正在为我的 WPF 项目创建一个 BaseViewModel,它派生自 DynamicObject,我不确定如何处理与主实体“相关”的实体的属性更改(主实体的导航属性)视图模型)。

例如:

虚拟机:

 public class CustomerCRUDViewModel: BaseEntityViewModel<Customer>
    {
        ...
    }

例如,这将是 Customer CRUD 的 VM。例如,客户实体有一个称为地址的导航属性(地址类型的实体)。

现在,问题是,当将视图绑定到 Address 内的属性时,更改不会报告给 VM,而是直接报告给实体,因此不会触发 VM 级别中定义的任何行为。

我知道解释可能不够清楚,我只是不知道如何用我糟糕的英语更好地解释自己。

我的问题是:通用的基于 DynamicObject 的 VM 如何处理我需要为不属于主实体的属性定义行为的场景?

4

2 回答 2

1

我最终通过在 System.Dynamic.DynamicObject.TryGetMember 'getter' 方法中使用缓存的 BaseViewModels 实例包装导航属性来解决这个问题。虽然不确定它是否是性能最高的解决方案,但我总是可以在派生的实体视图模型中强烈键入我的“导航视图模型”。

于 2012-07-06T16:32:16.050 回答
0

如果您的模型(在本例中为客户)实现了INotifyPropertyChanged接口,则 viewMoodle 可以注册到模型PropertyChanged事件。通过这种方式,ViewModel 可以了解发生的任何属性更改,并可以做出相应的反应。

于 2012-07-02T18:00:18.797 回答