protected override void OnClosing(CancelRoutedEventArgs e) { base.OnClosing(e); if (e.Cancel) { _closeReason = InfoCardCloseReason.InfoCardWindowClosed; return; } _isClosing = true; var cancel = false; var popupSite = InfoCardSite; if (popupSite != null) { var popup = popupSite.GetInfoCardFromHost(InfoCardHost); if (popup != null) { cancel |= (!popupSite.Close(popup, _closeReason, false)); } } if (cancel) { e.Cancel = true; _isClosing = false; return; } // Reset the close reason _closeReason = InfoCardCloseReason.InfoCardWindowClosed; }
internal void CloseInfoCardWindows(InfoCardCloseReason closeReason) { var infoCardWindows = GetInfoCardWindows(); foreach (var infoCardWindow in infoCardWindows) { if (!infoCardWindow.IsClosing) { infoCardWindow.Close(closeReason); } } }
internal bool Close(InfoCard infoCard, InfoCardCloseReason closeReason, bool force) { if ((infoCard == null) || (!infoCard.IsOpen)) { return(false); } // Raise closing event var closingEventArgs = new InfoCardEventArgs(infoCard, InfoCardClosingEvent, this); RaiseEvent(closingEventArgs); infoCard.RaiseClosingEvent(); if (!force && closingEventArgs.Cancel) { return(false); } var notifier = new EventNotifier(); notifier.Subscribe(infoCard); infoCard.Measure(new Size(0, 0)); infoCard.ClearValue(Expander.IsExpandedProperty); infoCard.ClearValue(InfoCard.IsPinnedProperty); var infoCardHost = InfoCardHost.GetInfoCardHost(infoCard); if (infoCardHost != null) { infoCardHost.Content = null; } notifier.RaiseEvents(); if (InfoCardService.GetUnregisterInfoCardOnClose(infoCard)) { InfoCards.Remove(infoCard); } RaiseEvent(new InfoCardEventArgs(infoCard, InfoCardClosedEvent, this)); infoCard.RaiseClosedEvent(); infoCard.LastCloseReason = closeReason; return(true); }
protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); if (e.Cancel) { _closeReason = InfoCardCloseReason.InfoCardWindowClosed; return; } IsClosing = true; var cancel = false; var infoCardSite = InfoCardSite; if (infoCardSite != null) { var popup = infoCardSite.GetInfoCardFromHost(InfoCardHost); if (popup != null) { cancel |= !infoCardSite.Close(popup, _closeReason, false); } } _closeReason = InfoCardCloseReason.InfoCardWindowClosed; if (!cancel) { Owner = null; return; } e.Cancel = true; IsClosing = false; return; }
public void Close(InfoCardCloseReason reason) { _closeReason = reason; Close(); }
void IInfoCardWindow.Close(InfoCardCloseReason reason) { _closeReason = reason; Close(); }