我有一个ObservableCollection,其中包含多种类型的视图模型,我希望为每个GridViewColumn的CellTemplates中的每个类型创建一个DataTemplate。在这个简单的示例中,我可以创建一个基本的ViewModel,但我希望能够仅从xaml中实现这一点。下面的xaml显示了我正在尝试做的事情,其中一个DataTemplates将用于每个CellTemplate。
如果有一个GridViewColumn.Resources,我会在那里定义DataTemplates,然后在CellTemplate中使用ContentPresenter来使用DataTemplate,但我显然不能这样做。我想我可能需要一个TemplateSelector,但我不确定从哪里开始。
<ListView ItemsSource={Binding GenericObservableCollection>
<ListView.View>
<GridView>
<GridViewColumn Header="Type">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="Input"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="Output"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Value">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type vm:ActionInputViewModel}">
<TextBlock Text="{Binding Property1}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ActionOutputViewModel}">
<TextBlock Text="{Binding Property2}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
ContentControl
的DataContext
,而不是像你正确指出的那样绑定Content
。赞美和感谢。 - Glenn SlaydenDisplayMemberBinding
属性。 - schoetbi