在WPF应用程序中使用MVVM模式,我要处理记录的“编辑状态” 。
每次用户开始编辑记录时,该窗口应切换到“编辑”模式,该代码可以通过名为IsEditing
的布尔属性轻松地在代码中表示。
这允许激活/停用UI按钮等。
我知道这样的属性应该放在ViewModel中。
但是如何确保用户一旦开始编辑其中一个字段,IsEditing
设置为true?
我发现的唯一方法是将IsEditing
明确分配给模型字段的包装器。
是否有更好,更聪明的方式来做到这一点,也许以集中的方式?我在方法中看到的弊端是遗忘某个字段的冗长和可能。
也许有一种完全不同的方法从一开始就可以处理此类问题?
我的模型(虽然不应该是实体框架核心):
public class City
{
public string Id { get; set; }
public string Name { get; set; }
}
关联的ViewModel(我仅包含相关代码):
public class CityVM : INotifyPropertyChanged
{
private bool _isEditing;
public bool IsEditing
{
get { return _isEditing; }
set
{
if (value!=_isEditing)
{
_isEditing = value;
NotifyPropertyChanged();
}
}
}
public string Name
{
get { return _model.Name; }
set
{
if (value!=_model.Name)
{
_model.Name = value;
NotifyPropertyChanged();
IsEditing = true;
}
}
}
}