Mercurial > silverbladetech
view MetroWpf/MetroWpf.Xaml/Extensions/AdornerExtensions.cs @ 114:e51a6af1c98d
working version
author | adminsh@apollo |
---|---|
date | Sat, 19 May 2012 16:53:34 +0100 |
parents | a8b50a087544 |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Text; using System.Windows.Documents; using System.Windows; using System.Windows.Controls; namespace MetroWpf.Xaml.Extensions { public static class AdornerExtensions { #region · Extension Methods · public static void TryRemoveAdorners<T>(this UIElement elem) where T : System.Windows.Documents.Adorner { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(elem); if (adornerLayer != null) { adornerLayer.RemoveAdorners<T>(elem); } } public static void RemoveAdorners<T>(this AdornerLayer adr, UIElement elem) where T : System.Windows.Documents.Adorner { System.Windows.Documents.Adorner[] adorners = adr.GetAdorners(elem); if (adorners == null) { return; } for (int i = adorners.Length - 1; i >= 0; i--) { if (adorners[i] is T) { adr.Remove(adorners[i]); } } } public static void TryAddAdorner<T>(this UIElement elem, System.Windows.Documents.Adorner adorner) where T : System.Windows.Documents.Adorner { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(elem); if (adornerLayer != null && !adornerLayer.ContainsAdorner<T>(elem)) { adornerLayer.Add(adorner); Panel.SetZIndex(adornerLayer, Panel.GetZIndex(elem)); } } public static bool ContainsAdorner<T>(this AdornerLayer adr, UIElement elem) where T : System.Windows.Documents.Adorner { System.Windows.Documents.Adorner[] adorners = adr.GetAdorners(elem); if (adorners == null) { return false; } for (int i = adorners.Length - 1; i >= 0; i--) { if (adorners[i] is T) { return true; } } return false; } public static void RemoveAllAdorners(this AdornerLayer adr, UIElement elem) { System.Windows.Documents.Adorner[] adorners = adr.GetAdorners(elem); if (adorners == null) { return; } foreach (var toRemove in adorners) { adr.Remove(toRemove); } } #endregion } }