您能想到IEditableObject
在基于MVVM的WPF应用程序中仍然有用的场景吗?如果是这样,你有一个证明这一点的例子。
答案 0 :(得分:15)
我在我的一个应用程序中使用了IEditableObject
。例如,如果您有一个用于编辑内容的对话框,则可以在ViewModel上实现IEditableObject。您可以在对话框打开时调用BeginEdit()
,在用户单击“确定”时调用EndEdit()
,在用户单击“取消”时调用CancelEdit()
。
IEditableObject
就是一个很好的界面。
答案 1 :(得分:2)
在DataGrid
中显示的类型中。这是必需的,因为当我使用选项卡并且DataGrid
存储在该选项卡中时,切换强制提交所需的选项卡,以便在DataGrid
内如果单元格处于活动状态时说话;回滚更改,因为他们没有提交。 Ť
有一种行为适用于DataGrid
以实现此功能,但IEditableObject
部分位于下方。
private IDatabaseConnection _copy;
void IEditableObject.BeginEdit()
{
if (this._copy == null)
this._copy = _container.Resolve<IDatabaseConnection>();
_copy.Database = this.Database;
_copy.DisplayName = this.DisplayName;
_copy.HostName = this.HostName;
_copy.Username = this.Username;
_copy.Password = this.Password;
}
void IEditableObject.CancelEdit()
{
this.Database = _copy.Database;
this.DisplayName = _copy.DisplayName;
this.HostName = _copy.HostName;
this.Username = _copy.Username;
this.Password = _copy.Password;
}
void IEditableObject.EndEdit()
{
_copy.Database = String.Empty;
_copy.DisplayName = String.Empty;
_copy.HostName = String.Empty;
_copy.Username = String.Empty;
_copy.Password = String.Empty;
}
答案 2 :(得分:2)
我的应用程序中有IEditableObject
的实现,因此如果用户输入的内容无效,我可以不更新我的数据模型,如果用户放弃更改,则回滚到原始值。