public static AdornerCollection GetAdorners(DependencyObject d) { if (d.GetValue(AdornersProperty) is not AdornerCollection collection) { var fe = d as FrameworkElement ?? throw new Exception("sdf2 vv"); collection = new AdornerCollection(fe); collection.CollectionChanged += Adorners_CollectionChanged; d.SetValue(AdornersProperty, collection); fe.DataContextChanged += AdornedFrameworkElement_DataContextChanged; fe.Loaded += AdornedFrameworkElement_Loaded; fe.Unloaded += AdornedFrameworkElement_Unloaded; } return(collection); void AdornedFrameworkElement_Loaded(object sender, RoutedEventArgs args) { UpdateAdorner((FrameworkElement)sender); } void AdornedFrameworkElement_Unloaded(object sender, RoutedEventArgs args) { HideAdorner((FrameworkElement)sender); } }
public static void SetAdorners(DependencyObject d, AdornerCollection value) { d.SetValue(AdornersProperty, value); }