我正在使用DevExpress XAF开发,我的问题有点棘手,总之,当我保存类时,我会根据提供的数据对其他类进行更改,当我在执行我的代码时,我就意识到了这一点关闭详细视图,问题是存在无法满足我的需求的场景,就是这样:
当我打开一个已经存在的局部视图并修改一些数据时,当我关闭窗口时,当我单击否时,程序将显示一个确认窗口(“您要注册吗?”),通常是我的视图控制器不会做任何事情,因为我拒绝更改班级数据
最后这是我的问题:在进行更改和执行我的代码之前,如何在视图控制器中测试对象是否已注册?
答案 0 :(得分:1)
当您说注册时,我想您的意思是保存。
您可以使用ObjectSpace.GetObjectsToSave()
方法获取对象列表,该对象列表将在调用ObjectSpace.CommitChanges()
时保存。然后,您可以确定View.CurrentObject是否在此列表中。
或者,您可以使用ObjectSpace_ObjectChanged
事件。像这样的东西。
public class MyViewController : ObjectViewController<DetailView, Contact> {
protected override void OnActivated() {
base.OnActivated();
ObjectSpace.ObjectChanged += ObjectSpace_ObjectChanged;
}
void ObjectSpace_ObjectChanged(object sender, ObjectChangedEventArgs e) {
if (e.Object == View.CurrentObject) {
// execute your business logic
}
}
protected override void OnDeactivated() {
base.OnDeactivated();
ObjectSpace.ObjectChanged -= ObjectSpace_ObjectChanged;
}
}
有关支持中心对类似请求的讨论,请参见here。