簡體   English   中英

如何使WPF Adorner可見

[英]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內。

MoveAdornerAdorner派生而來,僅在控件的頂部和底部繪制兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM