예제 #1
0
        void EditModelCore()
        {
            var winApplication = (WinApplication)Application;

            if (!winApplication.ShowViewStrategy.CloseAllWindows())
            {
                return;
            }
            var differenceStore = (ModelDifferenceStore)typeof(XafApplication).Invoke(winApplication, "CreateUserModelDifferenceStore");

            differenceStore?.SaveDifference(((ModelApplicationBase)winApplication.Model).LastLayer);
            var oldAspectProvider = ((ModelApplicationBase)winApplication.Model).CurrentAspectProvider;

            try {
                ((ModelApplicationBase)winApplication.Model).CurrentAspectProvider = new CurrentAspectProvider(oldAspectProvider.CurrentAspect);
                using (Form modelEditorForm = ModelEditorViewController.CreateModelEditorForm(winApplication)) {
                    modelEditorForm.ShowDialog();
                    if (modelEditorForm is IModelEditorSettings)
                    {
                        differenceStore?.SaveDifference(((ModelApplicationBase)winApplication.Model).LastLayer);
                    }
                }
            } finally {
                ((ModelApplicationBase)winApplication.Model).CurrentAspectProvider = oldAspectProvider;
            }
            try {
                winApplication.CallMethod("ShowStartupWindow");
            } catch (Exception e) {
                winApplication.HandleException(e);
                winApplication.Exit();
            }
        }
예제 #2
0
 protected override Form CreateModelEditorForm()
 {
     return(ModelEditorViewController.CreateModelEditorForm(this));
 }