我有一个ListView
填充了三种不同类型的项目。当我在ListViewItem
中选择ListView
时,我想在专门为所选项目类型设计的模板中显示数据。
数据显示在与Grid
相同的ListView
的不同列中。
我的问题是,我应该使用哪个元素来制作用于显示所选项目数据的新模板。
我希望能够在ItemTemplate
上设置一种Grid
属性,但事实并非如此。
<Grid
x:Name="ItemDetailsGrid"
DataContext="{Binding SelectedItem}"
ItemTemplate="{StaticResource {Binding SelectedItem.TemplateName}}">
</Grid>
这样做的正确方法是什么?
答案 0 :(得分:1)
我认为你需要一个ContentPresenter
<ContentPresenter
x:Name = "ItemDetailsGrid"
Content = "{Binding SelectedItem}">
<ContentPresenter.Resources>
<DataTemplate DateType="{x:Type Type1}">
<TextBlock Text="{Binding PropertyA}" />
</DataTemplate>
<DataTemplate DateType="{x:Type Type2}">
<TextBlock Text="{Binding PropertyB}" />
</DataTemplate>
</ContentPresenter>
将根据其类型选择适当的模板。