创建自定义WPF布局面板-忽略的子项不会消失

创建自定义WPF布局面板-忽略的子项不会消失,wpf,layout,Wpf,Layout,下午好。我正在创建一个自定义WPF布局控件,如果子项不适合可用区域,则需要在测量/排列过程中忽略它们。我正在测试混合 我已尝试重写GetVisualChild(n)和VisualChildCount,以尝试并允许运行时仅将某些元素识别为所需的子元素。这似乎很有效,但我面临的最大问题是: 我从Blend将一些子对象放入布局控件中。然后,我缩小了一些孩子无法进入我的面板的控件。问题是不再在视图中的子对象仍在混合设计图面上渲染。我尝试过使它们的视觉效果无效,调用“RemoveVisualChildI(

下午好。我正在创建一个自定义WPF布局控件,如果子项不适合可用区域,则需要在测量/排列过程中忽略它们。我正在测试混合

我已尝试重写GetVisualChild(n)和VisualChildCount,以尝试并允许运行时仅将某些元素识别为所需的子元素。这似乎很有效,但我面临的最大问题是:

我从Blend将一些子对象放入布局控件中。然后,我缩小了一些孩子无法进入我的面板的控件。问题是不再在视图中的子对象仍在混合设计图面上渲染。我尝试过使它们的视觉效果无效,调用“RemoveVisualChildI()”。。但似乎没有什么东西想让渲染的视觉效果消失

进入GetViasualChild(…)方法,我看到Blend和运行时只要求实际可见的子级(完全包含在我的布局面板中)。因此,在我看来,问题在于子元素认为它们仍然需要渲染,或者容器面板不知道它需要重新渲染

有什么线索吗?如果需要,我可以尝试提供更多细节,但我的基本需求是能够有选择地隐藏/显示(在测量/排列过程中省略)自定义面板的某些子级

谢谢!
-肖恩

既然没有人回应,我想我会分享解决方案。可视化树是通过可视化基类上的AddVisualChild(…)方法建立的。该小组负责为您与它的儿童收集这一点。为了解决这个问题,我所需要做的就是创建UIElementCollection的一个实例,并让它做一些不必要的工作。创建该类时,将向其传递一个可视父类和一个可选的逻辑父类。将元素添加到该集合时,会自动建立父/子关系


希望这能帮助下一个人

既然没有人回应,我想我会分享解决方案。可视化树是通过可视化基类上的AddVisualChild(…)方法建立的。该小组负责为您与它的儿童收集这一点。为了解决这个问题,我所需要做的就是创建UIElementCollection的一个实例,并让它做一些不必要的工作。创建该类时,将向其传递一个可视父类和一个可选的逻辑父类。将元素添加到该集合时,会自动建立父/子关系

希望这能帮助下一个人