DevExpress XAF-在ViewController中执行代码之前测试对象是否已注册

时间:2018-11-02 14:37:21

标签: c# visual-studio-2015 devexpress xaf

我正在使用DevExpress XAF开发,我的问题有点棘手,总之,当我保存类时,我会根据提供的数据对其他类进行更改,当我在执行我的代码时,我就意识到了这一点关闭详细视图,问题是存在无法满足我的需求的场景,就是这样:

当我打开一个已经存在的局部视图并修改一些数据时,当我关闭窗口时,当我单击否时,程序将显示一个确认窗口(“您要注册吗?”),通常是我的视图控制器不会做任何事情,因为我拒绝更改班级数据

最后这是我的问题:在进行更改和执行我的代码之前,如何在视图控制器中测试对象是否已注册?

1 个答案:

答案 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