WPF - 在我的自定义控件上覆盖IsVisible

时间:2011-04-04 13:19:54

标签: wpf custom-controls visibility adorner routed-events

我有一个自定义控件(一个Adorner)包装另一个控件(文本框)。

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

我希望能够覆盖VisibilityChanged,以便只有在Child的可见性发生变化时才触发MyCustomAdorner的事件,而不是实际的装饰器。我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

在第一种方法中,我会尝试将Adorner的可见性绑定到TextBox的可见性(不确定这个是否有效)。这样,如果文本框更改了可见性,则装饰器将跟随。如果你以两种方式绑定它们,那么它也会以相反的方式工作。因此,如果您不希望它同时工作,请确保您没有设置Adorner的可见性。

如果将Visibilities绑定在一起不起作用,您可以尝试声明一个管理可见性的新属性(例如bool),并通过Converter将两个Visibilities绑定到该bool。当你想改变Visibilities周围的东西时,你将这个bool设置为一个新的值。

覆盖VisibilityChange事件听起来不太好,我也不确定你是否能做到这一点......