[英]How to make WPF Adorner visible
我在何時或如何激活/使MoveAdorner可見方面有些掙扎。
我嘗試以下操作,但沒有成功:在要裝飾的元素中,我在GotFocus事件中添加了Adorner。 單靠那還不夠,所以我添加了對InvalidateVisual()的調用。 但是什么也沒發生。 有沒有人暗示如何使這些裝飾物可見?
protected void MyUIElement_GotFocus( object sender, RoutedEventArgs e )
{
AdornerLayer layer = AdornerLayer.GetAdornerLayer( this );
layer.Add( new MoveAdorner( this ) );
layer.InvalidateVisual( );
}
為了澄清起見:裝飾元素是一個控件,位於自定義ItemsControl的派生Panel內。
MoveAdorner
從Adorner
派生而來,僅在控件的頂部和底部繪制兩個Box。
親切的問候
實際上,“獲得/丟失焦點”事件對於這種情況不是很好。 想象一下,您想顯示其他可以獲得焦點的輸入控件。
現在,我已經連接到LeftButtonUpEvent並隱藏所有其他裝飾器,並且僅顯示當前元素的裝飾器。
同樣,可根據要求添加裝飾物。 此方法在要“裝飾”的控件中定義。
private void ShowAdorner( ) {
Owner.HideAppointmentAdorners( );
AdornerLayer layer = AdornerLayer.GetAdornerLayer( this );
Adorner []adorners = layer.GetAdorners( this );
if( adorners == null || adorners.Length == 0 )
{
layer.Add( new ResizingAdorner( this ) { Visibility = System.Windows.Visibility.Visible } );
}
else
{
for( int i = 0; i < adorners.Length; i++ )
{
adorners [ i ].Visibility = System.Windows.Visibility.Visible;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.