0

別のコントロール (テキスト ボックス) をラップするカスタム コントロール (Adorner) があります。

public class MyCustomAdorner : Decorator
{
   ...
   public MyCustomAdorner()
   {
      Child = new TextBox();
   }
}

実際のデコレータではなく、子の可視性が変更された場合にのみ MyCustomAdorner のイベントが発生するように、VisibilityChanged をオーバーライドできるようにしたいと考えています。これについてどうすればいいですか?

4

1 に答える 1

2

最初のアプローチでは、Adorner の Visibility を TextBox の Visibility にバインドしようとします (これが機能するかどうかはわかりません)。このように、テキスト ボックスの可視性が変わると、装飾が続きます。それらを双方向にバインドすると、逆方向にも機能します。したがって、両方の方法で機能させたくない場合は、アドナーの可視性を設定しないようにしてください。

Visibilities を一緒にバインドしてもうまくいかない場合は、visibilities を管理する新しいプロパティ (bool など) を宣言し、Converter を介して 2 つの Visibilities をその bool にバインドしてみてください。Visibilities の周りで何かを変更したい場合は、この bool を新しい値に設定します。

VisibilityChange イベントをオーバーライドするのは良くないように思えます。また、それができるかどうかもわかりません...

于 2011-04-05T08:01:42.610 に答える