【发布时间】:2015-03-06 13:07:52
【问题描述】:
我创建了一个自定义Panel,在其中我需要检查它的Children 是否通过手动操作集合来管理,或者面板是否用作ItemsPanel 的ItemsControl。
这是为了防止在尝试操作 Children 时引发以下异常。
无法显式修改用作 Panel 的 Children 集合 ItemsControl 的 ItemsPanel。 ItemsControl 生成子元素 面板。
如何区分面板的两种不同用法?
【问题讨论】:
-
请问您为什么要修改孩子的集合? Panel 的意义不就是单纯地通过测量和排列子元素来布局它们吗?
-
@StevenRands 这是一个公平的问题,我也不能完全确定这是一个好主意。无论如何,场景是我向面板 (search for 'LabelFactories' here) 添加了指定“工厂”的功能,该面板管理需要在面板上显示的经常性标签。卸载面板时,我需要删除工厂添加的标签,但仅在使用工厂时(而不是
ItemsSource)。 -
好的,我明白了。过去我使用面板的
OnRender方法来动态绘制这样的东西。尽管以这种方式“渲染”的任何东西都会出现在所有子节点的后面,但它确实有一个缺点。尽管如此,在某些情况下该方法仍然有用。
标签: wpf panel itemscontrol