//public static int GetAdornerIndex(this Adorner adorner) //{ // return (int)adorner.GetValue(AdornerIndexProperty); //} public static void AddAdorner(this FrameworkElement element, Adorner adorner, int depth = 1, int zindex = -1) { var items = element.GetAdorners(); if (items == null) { items = new List <AdornerData>(); element.SetValue(AdornersProperty, items); } if (items.Count(item => item.Adorner == adorner) == 0) { var data = new AdornerData() { Adorner = adorner, Depth = depth, ZIndex = zindex }; adorner.SetAdornerData(data); items.Add(data); ApplyAdorner(element, data); } }
private static void SetLayerZOrder(Adorner adorner, int index) { AdornerData data = adorner.GetAdornerData(); if (data.ParentLayer != null && data.ParentLayer.Equals(adorner.Parent)) { setZOrderMethodInfo.Invoke(data.ParentLayer, new object[] { adorner, index }); } }
public static void SetAdornerIndex(this Adorner adorner, int index) { AdornerData data = adorner.GetAdornerData(); if (data != null && data.ParentLayer != null) { data.ZIndex = index; SetLayerZOrder(adorner, index); } }
private static void ApplyAdorner(FrameworkElement element, AdornerData data) { if (element.IsLoaded && element.IsVisible) { ApplyAdornerCore(element, data); } else { if (!pendingElements.Contains(element)) { pendingElements.Add(element); element.Loaded += Element_Loaded; } } }
private static void ApplyAdornerCore(FrameworkElement element, AdornerData data) { AdornerLayer layer = GetAdornerLayer(element, data.Depth); if (layer == null) { return; } data.ParentLayer = layer; layer.Add(data.Adorner); int index = data.ZIndex; if (index < 0) { index = 0; } //SetLayerZOrder(data.Adorner, data.Adorner.GetAdornerIndex()); SetLayerZOrder(data.Adorner, index); }
private static void SetAdornerData(this Adorner adorner, AdornerData data) { adorner.SetValue(AdornerDataProperty, data); }