C# DevExpress XAF-在ViewController中执行代码之前,测试对象是否已注册
我正在使用DevExpress XAF进行开发,我的问题有点棘手,简而言之,当我保存我的类时,我根据提供的数据在其他类中进行更改,我通过一个控制器实现了这一点,该控制器在我关闭详细视图时执行代码,问题是有一个场景不满足我的需要,如下所示: 当我打开一个已经存在的细节视图并修改一些数据时,当我关闭窗口时,程序会显示一个确认窗口(“你想注册吗?”),当我单击“否”时,通常我的视图控制器不会做任何事,因为我拒绝更改我的类数据 最后是我的问题:在继续更改并执行代码之前,如何在我的视图控制器中测试对象是否已注册?当您说注册时,我想您的意思是保存 您可以使用C# DevExpress XAF-在ViewController中执行代码之前,测试对象是否已注册,c#,visual-studio-2015,devexpress,xaf,C#,Visual Studio 2015,Devexpress,Xaf,我正在使用DevExpress XAF进行开发,我的问题有点棘手,简而言之,当我保存我的类时,我根据提供的数据在其他类中进行更改,我通过一个控制器实现了这一点,该控制器在我关闭详细视图时执行代码,问题是有一个场景不满足我的需要,如下所示: 当我打开一个已经存在的细节视图并修改一些数据时,当我关闭窗口时,程序会显示一个确认窗口(“你想注册吗?”),当我单击“否”时,通常我的视图控制器不会做任何事,因为我拒绝更改我的类数据 最后是我的问题:在继续更改并执行代码之前,如何在我的视图控制器中测试对象是否
ObjectSpace.GetObjectsToSave()
方法获取对象列表,调用ObjectSpace.CommitChanges()
时将保存这些对象。然后您可以确定View.CurrentObject是否在此列表中
或者,您可以使用ObjectSpace\u 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;
}
}
公共类MyViewController:ObjectViewController{
已激活的受保护覆盖无效(){
base.OnActivated();
ObjectSpace.ObjectChanged+=ObjectSpace\u ObjectChanged;
}
void ObjectSpace\u ObjectChanged(对象发送方,objectchangedventargs e){
if(e.Object==View.CurrentObject){
//执行您的业务逻辑
}
}
受保护的覆盖已激活(){
base.com()激活;
ObjectSpace.ObjectChanged-=ObjectSpace\u ObjectChanged;
}
}
有关类似请求的支持中心讨论,请参阅。当您说注册时,我想您的意思是保存
您可以使用ObjectSpace.GetObjectsToSave()
方法获取对象列表,调用ObjectSpace.CommitChanges()
时将保存这些对象。然后您可以确定View.CurrentObject是否在此列表中
或者,您可以使用ObjectSpace\u 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;
}
}
公共类MyViewController:ObjectViewController{
已激活的受保护覆盖无效(){
base.OnActivated();
ObjectSpace.ObjectChanged+=ObjectSpace\u ObjectChanged;
}
void ObjectSpace\u ObjectChanged(对象发送方,objectchangedventargs e){
if(e.Object==View.CurrentObject){
//执行您的业务逻辑
}
}
受保护的覆盖已激活(){
base.com()激活;
ObjectSpace.ObjectChanged-=ObjectSpace\u ObjectChanged;
}
}
有关类似请求的支持中心讨论,请参阅