protected override void OnAttached()
        {
            var associatedObject = AssociatedObject;

            if (associatedObject == null)
            {
                throw new InvalidOperationException();
            }

            base.OnAttached();
            associatedObject.Closing += (sender, e) =>
            {
                if (e == null)
                {
                    throw new ArgumentNullException(nameof(e));
                }

                if (CanClose)
                {
                    return;
                }
                if (CloseCanceledCallbackCommand != null && CloseCanceledCallbackCommand.CanExecute(null))
                {
                    CloseCanceledCallbackCommand.Execute(null);
                }

                if (CloseCanceledCallbackMethodTarget != null && CloseCanceledCallbackMethodName != null)
                {
                    _callbackMethod.Invoke(CloseCanceledCallbackMethodTarget, CloseCanceledCallbackMethodName);
                }

                e.Cancel = !this.CanClose;
            };
        }
Example #2
0
        protected override void OnAttached()
        {
            base.OnAttached();
            AssociatedObject.Closing += (sender, e) =>
            {
                if (!CanClose)
                {
                    if (CloseCanceledCallbackCommand != null && CloseCanceledCallbackCommand.CanExecute(null))
                    {
                        CloseCanceledCallbackCommand.Execute(null);
                    }

                    if (CloseCanceledCallbackMethodTarget != null && CloseCanceledCallbackMethodName != null)
                    {
                        _callbackMethod.Invoke(CloseCanceledCallbackMethodTarget, CloseCanceledCallbackMethodName);
                    }

                    e.Cancel = true;
                }
            };
        }
Example #3
0
 public MainWindowViewModel()
 {
     CloseCanceledCallbackCommand.Subscribe(async() => await CloseCanceledCallbackMethodNameAsync()).AddTo(DisposeCollection);
 }