我有一个ListView GridView,其中ListView items表示不同类别的项。我想为每一类项目显示不同的上下文菜单。我本来希望使用数据模板来实现这一点,但我现在很挣扎。我的TreeView每个类别都有一个DataTemplate,我可以看到如何为每个类别设置不同的ContextMenu,但是我似乎无法让类似的DataTemplates为我的ListView工作。我找错树了吗?
E、 g.这是我的TreeView数据模板之一:
<DataTemplate DataType="{x:Type viewModel:Cat1ViewModel}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0"
Source="..\Images\cat1.png"/>
<TextBlock Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
我可以把我的上下文菜单添加到StackPanel(我希望)和Bob的叔叔中。
但是GridView的核心看起来是这样的:
<ListView.Resources>
<DataTemplate x:Key="image">
<Image Width="16" Height="16" Margin="-3,0,-3,0"
HorizontalAlignment="Center"
Source="{Binding Path=ObjectClass,
Converter={StaticResource imageConverter}}" />
</DataTemplate>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Width="20"
CellTemplate="{StaticResource image}"/>
<GridViewColumn Width="140" Header="Name"
DisplayMemberBinding="{Binding Path=Name}"
infrastructure:GridViewSort.PropertyName="Name"/>
<GridViewColumn Width="140" Header="Type"
DisplayMemberBinding="{Binding Path=Category}"
infrastructure:GridViewSort.PropertyName="Category"/>
<GridViewColumn Width="400" Header="Description"
DisplayMemberBinding="{Binding Path=Description}"
infrastructure:GridViewSort.PropertyName="Description"/>
</GridView>
</ListView.View>
DataTemplate资源中的这个imageConverter为listViewItem的类别显示适当的图标。
我不知道从哪里开始。所以,首先,我想做的是可能的吗?如果是,请你帮我开始。
也:
目前,每个ListViewItem都有一个viewModel支持—所有类别都使用同一个viewModel类。
背景:
我想显示不同的ContextMenu而不是更改ContextMenu的原因是我使用的是Prism,ContextMenus将是由不同模块自动填充的区域。