我有一个 TreeView
项目,我希望 ContextMenu
只为第二层项目弹出。我该怎么做?
最佳答案
我假设您将 TreeView
绑定(bind)到项目列表。如果是这样,第一层和第二层的项目是否或可以是不同的数据类型?然后,您可以为第一层类型创建一个 HierarchicalDataTemplate
,为第二层类型创建一个 DataTemplate
:
<HierarchicalDataTemplate DataType="{x:Type local:FirstTierType}" ItemsSource="{Binding Items}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:SecondTierType}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="whatever1" Command="whatever1cmd"></MenuItem>
<MenuItem Header="whatever2" Command="whatever2cmd"></MenuItem>
<MenuItem Header="whatever3" Command="whatever2cmd"></MenuItem>
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
</DataTemplate>
.
.
.
<TreeView ItemsSource="{Binding Items}" />
关于c# - WPF 如何根据 treeviewitem 类型更改上下文菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244873/