【问题标题】:WPF - Overriding IsVisible on my custom controlWPF - 在我的自定义控件上覆盖 IsVisible
【发布时间】:2011-07-29 04:27:09
【问题描述】:

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

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

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

【问题讨论】:

  • ChildVisibilityChanged 创建一个单独的事件可能更容易(也可能更明智),而不是更改现有事件的含义。

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


【解决方案1】:

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

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

覆盖 VisibilityChange 事件对我来说听起来不太好,我也不确定你是否可以这样做......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2014-04-14
    • 1970-01-01
    • 2014-03-28
    • 2012-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多