我有一個ListView GridView與ListViewItems代表不同類別的項目。我想爲每個類別的項目顯示不同的ContextMenu。我希望使用DataTemplates來做到這一點,但我很掙扎。我的TreeView每個類別都有一個DataTemplate,我可以看到如何爲每個類別設置不同的ContextMenu,但似乎無法獲得類似的DataTemplates來爲我的ListView工作。我吠叫錯了樹嗎?如何在WPF ListView GridView中顯示不同的ContextMenus?
E.g.這是我的DataTemplates的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的(我希望)和鮑勃的叔叔。
但在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>
這imageConverter在DataTemplate中的資源顯示爲一個ListViewItem的類別相應的圖標。
我不確定從哪裏開始。那麼,首先,我想做什麼?如果是這樣,請你讓我開始吧。
另外:
目前,每個ListViewItem的由視圖模型的支持 - 所有類別使用相同的ViewModel類。
背景:
我想顯示不同的文本菜單,而不是改變文本菜單的原因是,我使用棱鏡和ContextMenus將通過各種模塊自動填充區域。