/// <summary>
        ///     Tries to close view-model.
        /// </summary>
        /// <param name="parameter">The specified parameter, if any.</param>
        /// <returns>An instance of task with result.</returns>
        Task <bool> ICloseableViewModel.CloseAsync(object parameter)
        {
            var closeableViewModel = ViewModel as ICloseableViewModel;

            if (closeableViewModel != null)
            {
                return(closeableViewModel.CloseAsync(parameter));
            }
            var closingEvent = _internalClosingEvent;
            ViewModelClosedEventArgs closedArgs = null;

            if (closingEvent != null)
            {
                var args = new ViewModelClosingEventArgs(this, parameter);
                closingEvent(this, args);
                if (args.Cancel)
                {
                    return(Empty.FalseTask);
                }
                closedArgs = args;
            }
            var closedEvent = _internalClosedEvent;

            if (closedEvent != null)
            {
                closedEvent(this, closedArgs ?? new ViewModelClosedEventArgs(this, parameter));
            }
            return(Empty.TrueTask);
        }
        protected virtual Task <bool> OnClosingAsync(IViewModel viewModel, IDataContext context)
        {
            var handler     = viewModel.Settings.Metadata.GetData(ViewModelConstants.ClosingEvent);
            var closingTask = (viewModel as ICloseableViewModel)?.OnClosingAsync(context) ?? Empty.TrueTask;

            if (handler == null)
            {
                return(closingTask);
            }
            if (closingTask.IsCompleted)
            {
                var args = new ViewModelClosingEventArgs(viewModel, context);
                handler(viewModel, args);
                return(args.GetCanCloseAsync());
            }
            return(closingTask.TryExecuteSynchronously(task =>
            {
                if (!task.Result)
                {
                    return Empty.FalseTask;
                }
                var args = new ViewModelClosingEventArgs(viewModel, context);
                handler(viewModel, args);
                return args.GetCanCloseAsync();
            }).Unwrap());
        }
        public void OnClosing(ViewModelClosingEventArgs e)
        {
            var handler = Closing;

            if (handler != null)
            {
                handler(this, e);
            }
        }
示例#4
0
 bool RaiseViewModelClosing(object viewModel)
 {
     if (ViewModelClosing != null)
     {
         ViewModelClosingEventArgs e = new ViewModelClosingEventArgs(viewModel);
         ViewModelClosing(this, e);
         return(!e.Cancel);
     }
     return(true);
 }
示例#5
0
 private void OnClosing(IViewModel sender, ViewModelClosingEventArgs args)
 {
     if (SavingCheck())
     {
         applicationSettings.lastFileName = fileName;
         applicationSettings.SaveToFile();
     }
     else
     {
         args.Cancel = true;
     }
 }
示例#6
0
        bool CanRemoveCore(object viewModel)
        {
            if (viewModel == null || !viewModels.ContainsValue(viewModel))
            {
                return(true);
            }
            ViewModelClosingEventArgs e = new ViewModelClosingEventArgs(viewModel);

            ViewModelClosingCommand.If(x => x.CanExecute(e)).Do(x => x.Execute(e));
            ActualViewInjectionManager.RaiseViewModelClosingEvent(e);
            return(!e.Cancel);
        }
        protected virtual bool RaiseClosing(object parameter)
        {
            var handler = Closing;

            if (handler == null)
            {
                return(true);
            }
            var args = new ViewModelClosingEventArgs(this, parameter);

            handler(this, args);
            return(!args.Cancel);
        }
 private void ViewModelOnClosing(ICloseableViewModel sender, ViewModelClosingEventArgs args)
 {
     args.Cancel = !RaiseClosing(args.Parameter);
 }
 void OnStrategyViewModelClosing(object sender, ViewModelClosingEventArgs e)
 {
     ViewModelClosingCommand.If(x => x.CanExecute(e)).Do(x => x.Execute(e));
     ActualViewInjectionManager.RaiseViewModelClosingEvent(e);
 }
 void OnStrategyViewModelClosing(object sender, ViewModelClosingEventArgs e) {
     ViewModelClosingCommand.If(x => x.CanExecute(e)).Do(x => x.Execute(e));
     ActualViewInjectionManager.RaiseViewModelClosingEvent(e);
 }