我有一个自定义控件(一个Adorner)包装另一个控件(文本框)。
public class MyCustomAdorner : Decorator
{
...
public MyCustomAdorner()
{
Child = new TextBox();
}
}
我希望能够覆盖VisibilityChanged,以便只有在Child的可见性发生变化时才触发MyCustomAdorner的事件,而不是实际的装饰器。我该怎么做呢?
答案 0 :(得分:2)
在第一种方法中,我会尝试将Adorner的可见性绑定到TextBox的可见性(不确定这个是否有效)。这样,如果文本框更改了可见性,则装饰器将跟随。如果你以两种方式绑定它们,那么它也会以相反的方式工作。因此,如果您不希望它同时工作,请确保您没有设置Adorner的可见性。
如果将Visibilities绑定在一起不起作用,您可以尝试声明一个管理可见性的新属性(例如bool),并通过Converter将两个Visibilities绑定到该bool。当你想改变Visibilities周围的东西时,你将这个bool设置为一个新的值。
覆盖VisibilityChange事件听起来不太好,我也不确定你是否能做到这一点......