Exemplo n.º 1
0
        ///<summary>
        /// Deactivates a child whenever the specified parent is deactivated.
        ///</summary>
        ///<param name="child">The child to deactivate.</param>
        ///<param name="parent">The parent whose deactivation triggers the child's deactivation.</param>
        public static void DeactivateWith(this IDeactivate child, IDeactivate parent)
        {
            EventHandler <DeactivationEventArgs> handler = null;

            handler = (s, e) => {
                child.Deactivate(e.WasClosed);
                if (e.WasClosed)
                {
                    parent.Deactivated -= handler;
                }
            };
            parent.Deactivated += handler;
        }
Exemplo n.º 2
0
 public static void RunModal(this IDeactivate item)
 {
     try
     {
         var frame = new DispatcherFrame();
         item.Deactivated += (sender, e) => { frame.Continue = false; };
         Dispatcher.PushFrame(frame);
     }
     catch (Exception ex)
     {
         throw new Exception("Modal frame exception. Check inner exception for details.", ex.GetBaseException());
     }
 }
        ///<summary>
        /// Deactivates a child whenever the specified parent is deactivated.
        ///</summary>
        ///<param name="child">The child to deactivate.</param>
        ///<param name="parent">The parent whose deactivation triggers the child's deactivation.</param>
        public static void DeactivateWith(this IDeactivate child, IDeactivate parent)
        {
            var childReference = new WeakReference(child);
            EventHandler <DeactivationEventArgs> handler = null;

            handler = (s, e) => {
                var deactivatable = (IDeactivate)childReference.Target;
                if (deactivatable == null)
                {
                    ((IDeactivate)s).Deactivated -= handler;
                }
                else
                {
                    deactivatable.Deactivate(e.WasClosed);
                }
            };
            parent.Deactivated += handler;
        }
        public async Task <bool> IsCancelledAsync(IDeactivate deactivate, IServiceProvider serviceProvider)
        {
            if (deactivate == null)
            {
                return(false);
            }

            var deactivationContext = new DeactivationContext(serviceProvider);
            await deactivate.DeactivateAsync(deactivationContext);

            if (deactivationContext.Cancelled)
            {
                CancelArgs.Cancel = true;
                return(true);
            }

            return(false);
        }
Exemplo n.º 5
0
        ///<summary>
        /// Deactivates a child whenever the specified parent is deactivated.
        ///</summary>
        ///<param name="child">The child to deactivate.</param>
        ///<param name="parent">The parent whose deactivation triggers the child's deactivation.</param>
        public static void DeactivateWith(this IDeactivate child, IDeactivate parent)
        {
            var childReference = new WeakReference(child);
            AsyncEventHandler <DeactivationEventArgs> handler = null;

            handler = async(s, e) =>
            {
                var deactivatable = (IDeactivate)childReference.Target;
                if (deactivatable == null)
                {
                    ((IDeactivate)s).Deactivated -= handler;
                }
                else
                {
                    await deactivatable.DeactivateAsync(e.WasClosed, CancellationToken.None);
                }
            };
            parent.Deactivated += handler;
        }
Exemplo n.º 6
0
 /// <summary>
 /// Deactivates this instance.
 /// </summary>
 /// <param name="deactivate">The instance to deactivate</param>
 /// <param name="close">Indicates whether or not this instance is being closed.</param>
 /// <returns>A task that represents the asynchronous operation.</returns>
 public static Task DeactivateAsync(this IDeactivate deactivate, bool close) => deactivate.DeactivateAsync(close, default);