///<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; }
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); }
///<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; }
/// <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);