protected override void OnAttached() { base.OnAttached(); // Create adorner var adornerLayer = AdornerLayer.GetAdornerLayer(AssociatedObject); if (adornerLayer == null) { return; } _adornerControl = new ContentControl(); // Add to adorner _templateAdorner = new TemplateAdorner(AssociatedObject, _adornerControl); adornerLayer.Add(_templateAdorner); _adornerControl.Content = AdornerDataTemplate.LoadContent(); //BindingOperations.SetBinding(_adornerControl, // ContentControl.DataContextProperty, // new Binding("DataContext") // { // Source = AssociatedObject, // }); }
protected override void OnDetaching() { base.OnDetaching(); if (null != _templateAdorner) { AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(AssociatedObject as UIElement); adornerLayer.Remove(_templateAdorner); BindingOperations.ClearBinding(_templateAdorner, ContentControl.MarginProperty); _templateAdorner = null; _adornerControl = null; } }