2010-05-03 32 views
1

下午好。我創建了一個自定義的WPF佈局控件,如果它們不適合可用區域,則需要從度量/安排過程中忽略孩子。我正在用Blend進行測試。創建自定義WPF佈局面板 - 忽略不會消失的孩子

我已經嘗試覆蓋GetVisualChild(n)和VisualChildCount來嘗試並允許運行時只識別某些元素作爲我想要的孩子。這似乎工作正常,但我遇到的大問題是這樣的:

我將一些孩子放入Blend的佈局控件中。然後我縮小了一些孩子不適合我的面板的控制。問題是不再可見的孩子仍然在Blend設計界面上呈現。我試圖使他們的視覺無效,調用「RemoveVisualChildI()」..但似乎沒有想讓渲染的視覺效果消失。

分解成GetViasualChild(...)方法,我見證了Blend,運行時只需要實際可見的子元素(完全包含在我的佈局面板中)。因此,在我看來,這個問題與子元素有關,他們認爲他們仍然需要被渲染。或者容器面板不知道它需要重新渲染。

任何線索?如果需要,我可以嘗試並提供更多細節,但我的基本需求是有選擇地隱藏/顯示(從度量/安排過程中省略)自定義面板的某些子項的能力。

謝謝! - 肖恩

回答

1

由於沒有人回覆,我想我會分享解決方案。可視化樹是通過Visual基類的AddVisualChild(...)方法建立的。小組負責爲您提供兒童系列產品。爲了解決這個問題,我所需要做的就是創建一個UIElementCollection的實例,並讓它完成骯髒的工作。當創建該類時,它將傳遞一個可視父項和一個可選的邏輯父項。將元素添加到該集合時,父/子關係會自動建立。

希望這有助於下一個人!