【问题标题】:WPF: Add ContextMenu to TreeViewWPF:将 ContextMenu 添加到 TreeView
【发布时间】:2013-12-04 20:35:43
【问题描述】:

有一秒钟我很自豪,因为我终于设法将ContextMenu 添加到我的TreeView 的叶子中,但后来我意识到它在错误的节点上弹出。

我的 XAML:

    <TreeView 
        Grid.Row="1" 
        Grid.Column="0"
        x:Name="TvShowsTreeView"
        ItemsSource="{Binding TvShows}"
        SelectedItemChanged="TvShowsTreeViewOnSelectedItemChanged">

        <!-- Season template -->
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Seasons}">
                <TextBlock Text="{Binding Name}">
                    <TextBlock.ContextMenu>
                        <ContextMenu>
                            <MenuItem Header="Hide"></MenuItem>
                        </ContextMenu>
                    </TextBlock.ContextMenu>
                </TextBlock>

            </HierarchicalDataTemplate>

        </TreeView.ItemTemplate>
    </TreeView>

当我运行它时,我在TvShows 上得到一个上下文菜单,而不是在Seasons 上。

我很接近,对吧? :) 谁能在这里进一步帮助我?

【问题讨论】:

  • 在示例应用程序中尝试过这个,我在每个季节都得到 ContextMenu 而不是在电视节目上。
  • 那我可以借你的电脑吗,我真的很想完成这个:)。更严肃地说,我明天会仔细看看,如果它在你的电脑上工作,那么它一定是相当愚蠢的。感谢您的反馈!

标签: c# wpf treeview contextmenu


【解决方案1】:

正确的 XAML 应该是这样的:

    <TreeView 
        Grid.Row="1" 
        Grid.Column="0"
        x:Name="TvShowsTreeView"
        ItemsSource="{Binding TvShows}"
        SelectedItemChanged="TvShowsTreeViewOnSelectedItemChanged">

        <!-- TvShows template -->
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Seasons}">
                <TextBlock Text="{Binding Name}" />

                <!-- Seasons template -->
                <HierarchicalDataTemplate.ItemTemplate>
                    <HierarchicalDataTemplate>
                        <TextBlock Text="{Binding Name}">
                            <TextBlock.ContextMenu>
                                <ContextMenu>
                                    <MenuItem Header="Hide"></MenuItem>
                                </ContextMenu>
                            </TextBlock.ContextMenu>
                        </TextBlock>
                    </HierarchicalDataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>

        </TreeView.ItemTemplate>
    </TreeView>

附加的 HierarchicalDataTemplate 指定 Seasons 的模板,它本身不需要绑定 ItemSource,因为它不包含节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 2010-09-28
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多