コード例 #1
0
        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;
        }
コード例 #2
0
        internal void CloseInfoCardWindows(InfoCardCloseReason closeReason)
        {
            var infoCardWindows = GetInfoCardWindows();

            foreach (var infoCardWindow in infoCardWindows)
            {
                if (!infoCardWindow.IsClosing)
                {
                    infoCardWindow.Close(closeReason);
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        public void Close(InfoCardCloseReason reason)
        {
            _closeReason = reason;

            Close();
        }
コード例 #6
0
 void IInfoCardWindow.Close(InfoCardCloseReason reason)
 {
     _closeReason = reason;
     Close();
 }