我在我的WPF MVVM(基于Prism)应用中遇到了一些设计问题,希望能得到您的建议。 我的模型非常简单:
public class Customer
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
正如您所看到的,我的模型类没有任何支持INotifyPropertyChanged的功能。我还拥有一个 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 setter未被调用,IsDirty仍然等于false(因此不会在UI上更新IsDirty通知)。
我知道我可以在模型中支持INotifyPropertyChanged,然后在ViewModel中注册到Item.PropertyChanged事件,并将IsDirty实际设置为true。但是, 由于我还在使用CodeFirst,并且我的Model类在我的ServerSide和客户端之间共享(不使用Add Service Reference),我不想向我的ServerSide添加INotifyPreoprtyChanged内容。
我正在考虑创建一个新项目,使用T4模板逐个复制所有实体(如Customer)并为每个模型添加INotifyPropertyChanged支持。这是否合理?是否有其他建议?
谢谢!