【发布时间】:2012-12-02 23:08:39
【问题描述】:
我正在使用 ItemsControl 根据我的模型生成控件列表。 在查看可视化树时,我注意到每个呈现的控件都包含在 ContentPresenter 中。添加的控件是第 3 方控件,如果它们是同级控件,则设计为在每个控件之间显示拆分器。这允许用户调整每个控件的大小。例如,以下将显示运行时每个控件之间的拆分器。
<StackPanel>
<3rdPartyControl />
<3rdPartyControl />
<3rdPartyControl />
</StackPanel>
使用 ItemsControl 时,每个 3rdPartyControl 都包装在 ContentPresenter 中,因此不显示拆分器。我尝试了各种方法来尝试解决这个问题,但除非我在后面编写代码来添加每个控件而不是依赖 Xaml,否则无法让它工作。 有谁知道完全替换 contentpresenter 的方法(在我的例子中是 3rdpartyControl)?
谢谢
【问题讨论】:
-
为什么你认为 ContentPresenter 是 splitter 不起作用的原因?
-
因为如果我在我的示例中添加 3 个控件而不使用 ItemsControl,它会按预期工作。使用 snoop 来查看差异,我看到在它不起作用的情况下,contentpresenter 包装了控件......这是唯一的区别。
-
当你为 ItemsControl 指定你自己的 ItemsPanelTemplate (StackPanel) 时是这样吗?
-
ItemsPanel 模板将包含我相信的整个项目列表。我需要的是在生成的每个控件周围生成一个没有 ContentPresenter 的可视化树。出于绝望和好奇..我尝试指定自定义 ItemsControl.ItemsPanel、ItemsControl.Template 和 ItemsControl.ItemContainerStyle 以使这些控件呈现为顺序同级。在这些情况下,预期的行为都没有起作用,当检查可视化树时,我继续看到 ContentPresenter 包装的每个控件。
标签: c# wpf silverlight xaml