コード例 #1
0
        internal void AddModal(UIElement newElement, bool showBlurrer)
        {
            int childCount = _panel.Children.Count;

            if (childCount > 1)
            {
                UIElement child = PeekChild();
                child.IsHitTestVisible = false;
            }

            if (childCount <= 2 && showBlurrer)
            {
                _blurrer.InvalidateArrange();
                Animator.AnimatePropertyFromTo(_blurrer, OpacityProperty, 0, null, BlurrerAnimationDurationMs);
                _blurrer.Visibility = Visibility.Visible;
            }

            _panel.Children.Add(CreateDecorator(newElement));
            UpdateModalCount();
        }
コード例 #2
0
        internal void RemoveModal(UIElement closingElement, bool hideBlurrer)
        {
            if (_panel.Children.Count <= 1)
            {
                return;
            }

            var decorator = PeekChild() as Decorator;

            if (decorator == null)
            {
                return;
            }

            var element = decorator.Child;

            if (!ReferenceEquals(element, closingElement))
            {
                return;
            }

            _panel.Children.Remove(decorator);
            int childCount = _panel.Children.Count;

            if (childCount > 0)
            {
                var child = PeekChild();
                child.IsHitTestVisible = true;

                if (childCount <= 2 && hideBlurrer)
                {
                    Animator.AnimatePropertyFromTo(_blurrer, OpacityProperty, null, 0, BlurrerAnimationDurationMs, HideBlurrer);
                }
            }
            UpdateModalCount();
        }