示例#1
0
        public void OnPaneClosing(object sender, PaneClosingEventArgs e)
        {
            ContentPane contentPane = sender as ContentPane;

            if (contentPane != null)
            {
                var pane = contentPane;
                WorkSurfaceContextViewModel model = pane.DataContext as WorkSurfaceContextViewModel;
                if (model != null)
                {
                    var vm = model;
                    vm.TryClose();
                    var mainVm = vm.Parent as MainViewModel;
                    if (mainVm != null)
                    {
                        if (mainVm.CloseCurrent)
                        {
                            vm.Dispose();
                        }
                        else
                        {
                            e.Cancel = true;
                        }
                    }
                }
            }
        }
            /// <summary>
            ///   Called when the view is about to be closed.
            /// </summary>
            /// <param name = "sender">The sender.</param>
            /// <param name = "e">The <see cref = "System.ComponentModel.CancelEventArgs" /> instance containing the event data.</param>
            private void OnClosing(object sender, PaneClosingEventArgs e)
            {
                var guard = (IGuardClose)_viewModel;

                if (_isClosing)
                {
                    _isClosing = false;
                    return;
                }

                bool shouldEnd = false;

                guard.CanClose(canClose => Execute.OnUIThread(() =>
                {
                    e.Cancel = !canClose;

                    shouldEnd = true;
                }));

                if (shouldEnd)
                {
                    return;
                }

                e.Cancel = true;
            }
示例#3
0
        public void OnPaneClosing(object sender, PaneClosingEventArgs e)
        {
            ContentPane contentPane = sender as ContentPane;

            if (contentPane != null)
            {
                var pane = contentPane;

                WorkSurfaceContextViewModel model = pane.DataContext as WorkSurfaceContextViewModel;
                if (model != null)
                {
                    var workflowVm = model.WorkSurfaceViewModel as IWorkflowDesignerViewModel;
                    IContextualResourceModel resource = workflowVm?.ResourceModel;

                    if (resource != null && !resource.IsWorkflowSaved)
                    {
                        CloseCurrent(e, model);
                    }
                    else
                    {
                        var sourceView = model.WorkSurfaceViewModel as IStudioTab;
                        if (sourceView != null)
                        {
                            CloseCurrent(e, model);
                        }
                    }
                }
            }
        }
示例#4
0
        static void CloseCurrent(PaneClosingEventArgs e, WorkSurfaceContextViewModel model)
        {
            var vm = model;

            vm.TryClose();
            if (vm.Parent is ShellViewModel mainVm && !mainVm.CloseCurrent)
            {
                e.Cancel = true;
            }
        }
示例#5
0
        public void OnPaneClosing(object sender, PaneClosingEventArgs e)
        {
            if (sender is ContentPane contentPane)
            {
                var pane = contentPane;

                if (pane.DataContext is WorkSurfaceContextViewModel model)
                {
                    CloseCurrentWorkSurfaceWorkflowDesignerViewModel(e, model);
                }
            }
        }
示例#6
0
        static void CloseCurrentWorkSurfaceWorkflowDesignerViewModel(PaneClosingEventArgs e, WorkSurfaceContextViewModel model)
        {
            var workflowVm = model.WorkSurfaceViewModel as IWorkflowDesignerViewModel;
            var resource   = workflowVm?.ResourceModel;

            if (resource != null && !resource.IsWorkflowSaved)
            {
                CloseCurrent(e, model);
            }
            else
            {
                if (model.WorkSurfaceViewModel is IStudioTab sourceView)
                {
                    CloseCurrent(e, model);
                }
            }
        }
示例#7
0
        private static void CloseCurrent(PaneClosingEventArgs e, WorkSurfaceContextViewModel model)
        {
            var vm = model;

            vm.TryClose();
            var mainVm = vm.Parent as ShellViewModel;

            if (mainVm != null)
            {
                if (mainVm.CloseCurrent)
                {
                    //vm.Dispose();
                }
                else
                {
                    e.Cancel = true;
                }
            }
        }
示例#8
0
 public void OnPaneClosing(object sender, PaneClosingEventArgs e)
 {
     ContentPane contentPane = sender as ContentPane;
     if(contentPane != null)
     {
         var pane = contentPane;
         WorkSurfaceContextViewModel model = pane.DataContext as WorkSurfaceContextViewModel;
         if(model != null)
         {
             var vm = model;
             vm.TryClose();
             var mainVm = vm.Parent as MainViewModel;
             if(mainVm != null)
             {
                 if(mainVm.CloseCurrent)
                 {
                     vm.Dispose();
                 }
                 else
                 {
                     e.Cancel = true;
                 }
             }
         }
     }
 }
            /// <summary>
            ///   Called when the view is about to be closed.
            /// </summary>
            /// <param name = "sender">The sender.</param>
            /// <param name = "e">The <see cref = "System.ComponentModel.CancelEventArgs" /> instance containing the event data.</param>
            private void OnClosing(object sender, PaneClosingEventArgs e)
            {
                var guard = (IGuardClose)_viewModel;

                if(_isClosing)
                {
                    _isClosing = false;
                    return;
                }

                bool shouldEnd = false;

                guard.CanClose(canClose => Execute.OnUIThread(() =>
                {
                    e.Cancel = !canClose;

                    shouldEnd = true;
                }));

                if(shouldEnd)
                    return;

                e.Cancel = true;
            }