繁体   English   中英

WPF:将ContextMenu添加到TreeView

[英]WPF: Add ContextMenu to TreeView

有一天,我很自豪我终于设法在TreeView一个叶子上添加了一个ContextMenu ,但后来我发现它弹出错误的节点。

我的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

我很亲密,对吧? :)谁能在这里帮助我?

正确的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,因为它不包含节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM