2011-04-04 43 views
0

我有一個包裝另一個控件(文本框)的自定義控件(一個Adorner)。WPF - 在我的自定義控件上覆蓋IsVisible

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

我希望能夠覆蓋VisibilityChanged使得MyCustomAdorner的事件,如果孩子的可視性變化,僅啓動,而不是實際的裝飾。我將如何去做這件事?

+3

可能更容易(也可能是更明智的)來創建一個單獨的事件'ChildVisibilityChanged'而不是改變現有事件的含義。 – 2011-04-04 13:31:21

回答

2

在第一種方法中,我會嘗試將Adorner的可見性綁定到TextBox的可見性(不確定這是否適用)。這樣,如果文本框更改可見性,裝飾者將遵循。如果你用兩種方式來綁定它們,那麼它也會反過來工作。所以如果你不希望它能夠同時工作,請確保你不設置Adorner的可見性。

如果將Visibilities綁定在一起不起作用,您可以嘗試聲明一個管理可見性的新屬性(例如bool),並通過Converter將這兩個Visibility綁定到該布爾。而當你想改變Visibilities的東西時,你可以將這個布爾值設置爲一個新的值。

重寫VisibilityChange事件不健全的對我好,我也不敢肯定,如果你甚至可以做到這一點...