IEditableObject
您能想到在基于 MVVM 的 WPF 应用程序中仍然有用的场景吗?如果是这样,你有一个例子来证明这一点。
问问题
10136 次
3 回答
16
我IEditableObject
在我的一个应用程序中使用过。例如,如果您有一个用于编辑内容的对话框,您可以在 ViewModel 上实现 IEditableObject。您BeginEdit()
在对话框打开、EndEdit()
用户单击确定以及CancelEdit()
用户单击取消时调用。
IEditableObject
是一个很好的界面,只要您希望能够回滚更改。
于 2010-12-10T15:32:00.653 回答
3
我IEditableObject
在我的应用程序中有一个实现,因此如果用户输入的内容无效,我可以避免更新我的数据模型,如果用户放弃更改,我可以回滚到原始值。
于 2010-12-11T00:31:37.557 回答
2
在一个类型中显示在一个DataGrid
. 这是需要的,因为当我使用选项卡并且 aDataGrid
存储在该选项卡中时,切换了强制提交所需的选项卡,可以说,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;
}
于 2010-12-10T15:32:35.410 回答