我正在使用DevExpress XAF进行开发,我的问题有点棘手,简而言之,当我保存我的类时,我会根据提供的数据在其他类中进行更改,我通过一个控制器实现了这一点,该控制器在我关闭详细信息视图时执行代码,问题是有一个场景不能满足我的需求,如下所示:
当我打开一个已经存在的详细视图并修改一些数据时,当我关闭窗口时,程序会显示一个确认窗口("你想注册吗?"(当我点击否时,通常我的视图控制器不会做任何事情,因为我拒绝更改我的类数据
最后是我的问题:在进行更改并执行我的代码之前,如何在我的视图控制器中测试对象是否已注册?
当你说注册时,我认为你的意思是保存。
您可以使用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;
}
}
请参阅此处,了解支持中心对类似请求的讨论。