2010-05-03 107 views
1

下午好。我创建了一个自定义的WPF布局控件,如果它们不适合可用区域,则需要从度量/安排过程中忽略孩子。我正在用Blend进行测试。创建自定义WPF布局面板 - 忽略不会消失的孩子

我已经尝试覆盖GetVisualChild(n)和VisualChildCount来尝试并允许运行时只识别某些元素作为我想要的孩子。这似乎工作正常,但我遇到的大问题是这样的:

我将一些孩子放入Blend的布局控件中。然后我缩小了一些孩子不适合我的面板的控制。问题是不再可见的孩子仍然在Blend设计界面上呈现。我试图使他们的视觉无效,调用“RemoveVisualChildI()”..但似乎没有想让渲染的视觉效果消失。

分解成GetViasualChild(...)方法,我见证了Blend,运行时只需要实际可见的子元素(完全包含在我的布局面板中)。因此,在我看来,这个问题与子元素有关,他们认为他们仍然需要被渲染。或者容器面板不知道它需要重新渲染。

任何线索?如果需要,我可以尝试并提供更多细节,但我的基本需求是有选择地隐藏/显示(从度量/安排过程中省略)自定义面板的某些子项的能力。

谢谢! - 肖恩

回答

1

由于没有人回复,我想我会分享解决方案。可视化树是通过Visual基类的AddVisualChild(...)方法建立的。小组负责为您提供儿童系列产品。为了解决这个问题,我所需要做的就是创建一个UIElementCollection的实例,并让它完成肮脏的工作。当创建该类时,它将传递一个可视父项和一个可选的逻辑父项。将元素添加到该集合时,父/子关系会自动建立。

希望这有助于下一个人!