0

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

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

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

4

1 回答 1

2

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

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

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

于 2011-04-05T08:01:42.610 回答