【发布时间】:2011-09-05 16:52:48
【问题描述】:
我创建了一个继承 ItemsControl 的控件,以及我制作的控件 其模板没有 ItemsPresenter。相反,我有一个网格。 我想列一个这样的清单:
(第 1 项)
(网格分割器)
(第 2 项)
(网格分割器)
(第 3 项)
因为我必须在 Items 之间插入我自己的 GridSplitter,所以我不能使用 ItemsPresenter 并让它为我填充 UI。
我重写了 OnItemsChanged() 方法,因此我可以编写添加/删除 网格分离器。但是,我仍然需要使用 ItemContainerGenerator 类来 为我的项目生成 ItemTemplate。
但是当我的控件模板中没有 ItemsPresenter 时,ItemContainerGenerator 似乎不起作用。当我第一次使用它生成项目时,它会返回 带有 DataTemplate 的 ContentPresenter。然后我将它插入到我拥有的网格中。 但是,屏幕上没有显示任何项目。如果我添加另一个项目,它会抛出 当我插入网格时出错,说该项目已经在可视化树中。 这就是我认为没有 ItemsPresenter 的 ItemContainerGenerator 无法工作的原因。
所以我尝试用 ItemsPresenter 替换我的 Grid。这一次,它使用了它的 下划线创建项目的逻辑,它显示了它应该做的事情。然而,这不是我想要的。
我想使用 ItemContainerGenerator 的原因是我需要创建 我在 Xaml 中定义的 ItemTemplate 中的 UI 元素。
有没有一种方法可以使用我对项目的控件的 ItemTemplate 生成 UI?
【问题讨论】:
标签: templates silverlight contentpresenter itemspresenter