【发布时间】:2013-01-29 23:10:41
【问题描述】:
我在我的 wpf MVVM(基于 Prism)应用程序中面临一些设计问题,很高兴得到您的建议。 我的模型很简单:
public class Customer
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
如您所见,我的 Model 类没有任何 INotifyPropertyChnaged 支持。 我还有用于 CustomerDetails 屏幕的 ViewModel,它支持 INotifyPropertyChanged。
public class CustomerDetailsViewModel:INotifyPropertyChanged /*Or NotificationObject*/
{
/*INotifyPropertyChanged event */
private Customer item;
public Customer Item
{
get{return item;}
set
{
item=value;
//Raise PropertyChanged
//Set IsDirty to true
}
}
}
在我看来,我正在使用绑定到 Item.FirstName 并且我的 ViewModel 正在更新。 我的问题是 - 因为只有 FirstName 属性正在通过 View 更新,并且模型本身不支持 INotifyPropertyChanged,因此没有调用 Item 设置器,并且 IsDirty 仍然等于 false(因此不会更新 IsDirty 通知用户界面)。
我知道我可以在模型中支持INotifyPropertyChanged,然后在视图模型中注册到Item.PropertyChanged事件,并实际设置IsDirty为true,但是—— 由于我也在使用 CodeFirst,并且我的模型类在我的服务器端和我的客户端之间共享(不使用添加服务引用),我不想将 INotifyPreoprtyChanged 的东西添加到我的服务器端。
我正在考虑创建新项目,该项目将使用 T4 模板一一复制我的所有实体(作为客户),并为每个模型添加 INotifyPropertyChanged 支持。 这看起来合理还是不合理?还有其他建议吗?
谢谢!
【问题讨论】:
标签: c# .net wpf mvvm inotifypropertychanged