DevExpress XAF - 在 ViewController 中执行代码之前测试对象是否已注册
DevExpress XAF - Test if an object is registred before executing code in ViewController
我正在使用 DevExpress XAF 进行开发,我的问题有点棘手,简而言之,当我保存 class 时,我会根据提供的数据对其他 classes 进行更改,我通过关闭详细视图时执行代码的控制器实现了这一点,问题是有一个场景不符合我的需求,这里是:
当我打开一个已经存在的详细视图并修改一些数据时,当我关闭 window 时,程序会显示 window 确认(“你想注册吗?”当我点击否时,通常我的视图控制器不会做任何事情,因为我拒绝更改我的 class 数据
最后我的问题是:在继续更改和执行我的代码之前,如何在我的视图控制器中测试对象是否已注册?
当你说注册时,我想你的意思是保存。
您可以使用 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。
我正在使用 DevExpress XAF 进行开发,我的问题有点棘手,简而言之,当我保存 class 时,我会根据提供的数据对其他 classes 进行更改,我通过关闭详细视图时执行代码的控制器实现了这一点,问题是有一个场景不符合我的需求,这里是:
当我打开一个已经存在的详细视图并修改一些数据时,当我关闭 window 时,程序会显示 window 确认(“你想注册吗?”当我点击否时,通常我的视图控制器不会做任何事情,因为我拒绝更改我的 class 数据
最后我的问题是:在继续更改和执行我的代码之前,如何在我的视图控制器中测试对象是否已注册?
当你说注册时,我想你的意思是保存。
您可以使用 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。