コード例 #1
0
ファイル: LightBox.cs プロジェクト: sourcechord/WPFSamples
        private static LightBoxAdorner GetAdorner(UIElement element)
        {
            // Window系のクラスだったら、Contentプロパティを利用。それ以外の場合はそのまま利用。
            var target = (element as Window)?.Content as UIElement ?? element;

            if (element == null) return null;
            var layer = AdornerLayer.GetAdornerLayer(target);
            if (layer == null) return null;

            var current = layer.GetAdorners(target)
                               ?.OfType<LightBoxAdorner>()
                               ?.SingleOrDefault();

            if (current != null)
            {
                return current;
            }
            else
            {
                // ダイアログ用のAdornerが存在してないので、新規に作って設定して返す。
                var adorner = new LightBoxAdorner(target, element);

                // すべてのダイアログがクリアされたときに、Adornerを削除するための処理を追加
                adorner.AllDialogClosed += (s, e) => { ClearAdorner(layer, adorner); };
                layer.Add(adorner);
                return adorner;
            }
        }
コード例 #2
0
ファイル: LightBox.cs プロジェクト: wook8170/WPFSamples-1
        private static LightBoxAdorner GetAdorner(UIElement element)
        {
            // Window系のクラスだったら、Contentプロパティを利用。それ以外の場合はそのまま利用。
            var target = (element as Window)?.Content as UIElement ?? element;

            if (element == null)
            {
                return(null);
            }
            var layer = AdornerLayer.GetAdornerLayer(target);

            if (layer == null)
            {
                return(null);
            }

            var current = layer.GetAdorners(target)
                          ?.OfType <LightBoxAdorner>()
                          ?.SingleOrDefault();

            if (current != null)
            {
                return(current);
            }
            else
            {
                // ダイアログ用のAdornerが存在してないので、新規に作って設定して返す。
                var adorner = new LightBoxAdorner(target, element);

                // すべてのダイアログがクリアされたときに、Adornerを削除するための処理を追加
                adorner.AllDialogClosed += (s, e) => { ClearAdorner(layer, adorner); };
                layer.Add(adorner);
                return(adorner);
            }
        }
コード例 #3
0
ファイル: LightBox.cs プロジェクト: sourcechord/WPFSamples
 private static void ClearAdorner(AdornerLayer layer, LightBoxAdorner adorner)
 {
     // null条件演算子でいいかも。
     if (layer != null && adorner != null)
     {
         layer.Remove(adorner);
     }
 }
コード例 #4
0
ファイル: LightBox.cs プロジェクト: wook8170/WPFSamples-1
 private static void ClearAdorner(AdornerLayer layer, LightBoxAdorner adorner)
 {
     // null条件演算子でいいかも。
     if (layer != null && adorner != null)
     {
         layer.Remove(adorner);
     }
 }