我目前正在使用MVVM和Entity Framework Code First Model开展项目。所以我在我的模型类中实现了IDataErrorInfo和INotifyPropertyChanged。现在,在我的viewmodel中我实现了一个SaveCommand和一个CanSave布尔方法,我的问题是如何为整个实体而不是单个属性提高canexecutechanged?因为我的属性已经在模型中实现了InotifyPropertyChanged。
这是我的模型类
public class Guest:ValidatableBindableClass
{
//my properties here
//implement InotifyPropertyChanged and IDataErrorInfo
}
这是我的ViewModelClass:
public class AddEditGuestViewModel:BindableClass
{
private Hospede guest;
public RelayCommand SaveCommand { get; set; }
private readonly Hmsdb.HMS context = new Hmsdb.HMS();
public Hospede Guest
{
get { return guest; }
set { SetProperty(ref guest, value, propertyName: "Guest"); }
}
private void OnSave()
{
context.Hospedes.Add(Guest);
context.SaveChanges();
}
private bool CanSave()
{
return context.Entry(Guest)
.GetValidationResult().IsValid;
}
}
答案 0 :(得分:0)
您可以通过将PropertyChanged
或null
传递给string.Empty
的构造函数来提升所有属性的PropertyChangedEventArgs
事件:
PropertyChanged(this, new PropertyChangedEventArgs(null));
您需要调用每个RaiseCanExecuteChanged()
的{{1}}方法。