我在我的 wpf MVVM(基于 Prism)应用程序中面临一些设计问题,很乐意得到您的建议。我的模型很简单:
public class Customer
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
如您所见,我的 Model 类没有任何 INotifyPropertyChnaded 支持。我还有用于 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,并且我的 Model 类在我的 ServerSide 之间共享和我的客户端(不使用添加服务参考),我不想将 INotifyPreoprtyChanged 的东西添加到我的服务器端。
我正在考虑创建新项目,该项目将使用 T4 模板一一复制我的所有实体(作为客户),并为每个模型添加 INotifyPropertyChanged 支持。这看起来合理还是不合理?还有其他建议吗?
谢谢!