2010-11-29 23 views
1

MoveAdornerのアクティブ化/表示の方法や方法について少し苦労しています。WPF Adornerを表示させる方法

私は以下を試してみましたが、成功しません:装飾される要素で、私はGotFocusイベントにAdornerを追加します。それだけでは不十分なので、InvalidateVisual()への呼び出しを追加しました。しかし、何も起こりません。それらのアドナーを目に見えるようにする方法のヒントはありますか?

protected void MyUIElement_GotFocus(object sender, RoutedEventArgs e) 
    { 
     AdornerLayer layer = AdornerLayer.GetAdornerLayer(this); 
     layer.Add(new MoveAdorner(this)); 
     layer.InvalidateVisual(); 
    } 

明確化のために:装飾された要素は、カスタムItemsControlの派生パネル内に配置されたコントロールです。

MoveAdornerは、Adornerから派生し、単純に2つのボックスをコントロールの上端と下端に描画します。種類と

はガット/ロストフォーカスイベントは、このような状況のために非常に良いものではありません実際には

答えて

0

について。あなたがフォーカスを得ることができる追加の入力コントロールを表示したいとします。

私は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; 
     } 
    } 

}

関連する問題