c# - WPF 如何根据 treeviewitem 类型更改上下文菜单项?

标签 c# wpf xaml treeview contextmenu

我有一个 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/

相关文章:

c# - 如何使用 XAML/C# 创建透明的 'hotspot'

c# - LINQ 找到最近的坐标

c# - 无法将 cellValuePresenter/TypeConverter 应用于 XamDataGrid 单元格

wpf - 如何通过行和列索引以编程方式访问 WPF 网格中的控件?

.net - WPF 事件属性改变了吗?

c# - 有没有办法在 ListView 中嵌套分组?或者我必须使用 TreeView 吗?

c# - 如何从流中删除转义序列

c# - 更改 Xamarin Forms XAML 按钮的 isVisible 属性

c# - 即使对于现代应用程序也是最重要的

c# - 更新 "live"WPF Canvas (折线),当 PointCollection 发生变化时