我有一个 ListView
,我想对它的项应用自定义的 ControlTemplate
。它的定义如下:
<ListView ItemsSource="{Binding MyAwesomeItems}" ...
我的 MyAwesomeItems 包含不同的类。所以我自己想了一下:"嗯,DataTemplates 你好啊。"
为了让包含的项目看起来符合我的要求,我定义了一个 ControlTemplate
如下:
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border><ContentControl Content="{TemplateBinding Content}"/></Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
我使用了ContentControl
并带有绑定到TemplateBinding Content
的方式。我期望WPF会将我的项目插入该ContentControl
中,使用任何我为其定义的DataTemplate。
但实际上,它似乎只使用了项目.ToString()
,并没有应用任何DataTemplates。这是预期的行为吗?
我想要实现的是:有一个项目列表,每个项目容器的外观都与我想要的完全相同,并且该容器的内容来自DataTemplate。
ContentPresenter
。区别在于DataContext
的设置方式。 - Tobias Brandt<ContentPresenter/>
。 - Tobias Brandt