我有一个对象,它实现了在绑定到Silverlight页面的viewmodel上公开的IEditableObject接口。
我如何/在哪里调用BeginEdit,CancelEdit和EndEdit方法?如何仅将实现此接口的对象约束到我的页面?
我没有使用DataGrid或DataForm控件。我正在使用Label,TextBox和DescriptionViewer控件来显示要编辑的数据。
答案 0 :(得分:6)
我知道这是一个旧线程(但为了将来使用......)
我是这样做的:
每当当前项(例如CollectionViewSource)发生更改时,都会执行此操作:
void View_CurrentChanged(object sender, EventArgs e)
{
if (culturesView.Source != null)
{
((IEditableObject)SelectedRecord).BeginEdit();
RaisePropertyChanged("SelectedRecord");
}
}
每当我想保存(当前项目)时,我都这样做:
private void Save()
{
((IEditableObject)SelectedRecord).EndEdit();
//do the actual saving to the dbms here ....
}
每当我要取消(当前更改)时,我都这样做:
private void Cancel()
{
((IEditableObject)SelectedRecord).CancelEdit();
//allthough we have canceled the editing we have to re-enable the edit mode (because
//the user may want to edit the selected record again)
((IEditableObject)SelectedRecord).BeginEdit();
}
希望将来帮助某人!