void HideAdorner() { if (this.isAdornerVisible && this.adorner != null) { var layer = AdornerLayer.GetAdornerLayer(this.AssociatedObject); Debug.WriteLineIf(layer == null, "Overlay: cannot find any AdornerLayer on the given element."); if (layer != null) { layer.Remove(this.adorner); this.adorner = null; this.isAdornerVisible = false; } this.AssociatedObject.IsEnabled = this.wasEnabled; } }
static void OnContentPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs args) { if (!DesignTimeHelper.GetIsInDesignMode()) { var control = ( FrameworkElement )d; if (!control.IsLoaded) { control.Loaded += (s, e) => { var layer = AdornerLayer.GetAdornerLayer(control); Debug.WriteLineIf(layer == null, "Overlay: cannot find any AdornerLayer on the given element."); if (layer != null) { var content = GetContent(control); if (content != null) { var a = new ContentOverlayAdorner(control, content); layer.Add(a); SetOverlayAdorner(control, a); } } }; control.Unloaded += (s, e) => { var layer = AdornerLayer.GetAdornerLayer(control); Debug.WriteLineIf(layer == null, "Overlay: cannot find any AdornerLayer on the given element."); if (layer != null) { var a = GetOverlayAdorner(control); if (a != null) { layer.Remove(a); SetOverlayAdorner(control, null); } } }; } } }
void ShowAdorner() { if (!this.isAdornerVisible) { var layer = AdornerLayer.GetAdornerLayer(this.AssociatedObject); Debug.WriteLineIf(layer == null, "Overlay: cannot find any AdornerLayer on the given element."); if (layer != null) { this.adorner = new ContentOverlayAdorner(this.AssociatedObject, this.Content) { IsHitTestVisible = this.IsHitTestVisible, Background = this.Background }; layer.Add(this.adorner); this.wasEnabled = this.AssociatedObject.IsEnabled; this.AssociatedObject.IsEnabled = !this.DisableAdornedElement; this.isAdornerVisible = true; } } }
static void SetOverlayAdorner(UIElement control, ContentOverlayAdorner value) { control.SetValue(OverlayAdornerProperty, value); }
static void OnContentPropertyChanged( DependencyObject d, DependencyPropertyChangedEventArgs args ) { if( !DesignTimeHelper.GetIsInDesignMode() ) { var control = ( FrameworkElement )d; if( !control.IsLoaded ) { control.Loaded += ( s, e ) => { var layer = AdornerLayer.GetAdornerLayer( control ); Debug.WriteLineIf( layer == null, "Overlay: cannot find any AdornerLayer on the given element." ); if( layer != null ) { var content = GetContent( control ); if( content != null ) { var a = new ContentOverlayAdorner( control, content ); layer.Add( a ); SetOverlayAdorner( control, a ); } } }; control.Unloaded += ( s, e ) => { var layer = AdornerLayer.GetAdornerLayer( control ); Debug.WriteLineIf( layer == null, "Overlay: cannot find any AdornerLayer on the given element." ); if( layer != null ) { var a = GetOverlayAdorner( control ); if( a != null ) { layer.Remove( a ); SetOverlayAdorner( control, null ); } } }; } } }
static void SetOverlayAdorner( UIElement control, ContentOverlayAdorner value ) { control.SetValue( OverlayAdornerProperty, value ); }