您需要INotifyPropertyChanged在 Model 和 ViewModel 中实现接口,以便 UI 将在运行时更新。
在视图模型中
public class xxxViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Profile _originalProfile ;
Profile originalProfile {
get
{
return _originalProfile ;
}
set
{
if(_originalProfile !=value)
{
_originalProfile = value;
OnPropertyChanged("originalProfile");
}
}
}
}
在模型
public class Profile: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
string firstName ;
string FirstName {
get
{
return firstName ;
}
set
{
if(firstName !=value)
{
firstName = value;
OnPropertyChanged("FirstName");
}
}
}
string lastName ;
string LastName {
get
{
return lastName ;
}
set
{
if(lastName !=value)
{
lastName = value;
OnPropertyChanged("LastName ");
}
}
}
}
更新
您可以在 Profile 中添加一个方法
//
void UpdateValue(Profile newValue)
{
this.FirstName = newValue.FirstName;
//...
}
现在在 ViewModel 中你只需要像下面这样调用它。
originalProfile.UpdateValue(clonedProfile);