如何显示TreeView项上下文菜单中的WPF一个分层数据模板 [英] How to display context menu for treeview item in a hierarchial data template in wpf

查看:293
本文介绍了如何显示TreeView项上下文菜单中的WPF一个分层数据模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用WPF的分层数据模板显示上下文菜单树视图项目?如何只为CountryTemplate显示上下文菜单:

 < HierarchicalDataTemplate X:键=DispTemplate> 
< StackPanel的方向=横向>
< TextBlock的文本={绑定路径=标签}样式={StaticResource的TreeTextStyle}工具提示={绑定路径=说明}标记={绑定路径=标签}>
< / TextBlock的>
< / StackPanel的>
< / HierarchicalDataTemplate>
< HierarchicalDataTemplate X:键=BuildingTemplate的ItemsSource ={绑定路径=大厦}的ItemTemplate ={StaticResource的BuildingTemplate}>
< StackPanel的方向=横向>
< TextBlock的文本={绑定路径=标签}样式={StaticResource的TreeTextStyle}工具提示={绑定路径=说明}/>
< / StackPanel的>
< / HierarchicalDataTemplate>
< HierarchicalDataTemplate X:键=CityTemplate的ItemsSource ={绑定路径=城市}的ItemTemplate ={StaticResource的CityTemplate}>
< StackPanel的方向=横向>
< TextBlock的文本={绑定路径=标签}样式={StaticResource的TreeTextStyle}工具提示={绑定路径=说明}/>
< / StackPanel的>
< / HierarchicalDataTemplate>
< HierarchicalDataTemplate X:键=CountryTemplate的ItemsSource ={绑定路径=国家}的ItemTemplate ={StaticResource的CountryTemplate}>
< StackPanel的方向=横向>
< TextBlock的文本={绑定路径= ROOTNAME}风格={StaticResource的TreeTextStyle}工具提示={绑定路径=说明}/>
< / StackPanel的>
< / HierarchicalDataTemplate>


解决方案

您还可以添加文本菜单来的数据模板任何视觉的孩子,如:

 < HierarchicalDataTemplate X:关键=CountryTemplate的ItemsSource ={绑定路径=国家}的ItemTemplate ={StaticResource的CountryTemplate}> 
< StackPanel的方向=横向>
< StackPanel.ContextMenu>
<&文本菜单GT;
<菜单项标题=页眉命令={绑定命令}/> <! - 此命令应该是在数据上下文(每个国家项目) - >
< /文本菜单>
< /StackPanel.ContextMenu>
< TextBlock的文本={绑定路径= ROOTNAME}风格={StaticResource的TreeTextStyle}工具提示={绑定路径=说明}/>
< / StackPanel的>
< / HierarchicalDataTemplate>


How to display context menu for tree view item in wpf using the hierarchical data template? How to display context menu only for CountryTemplate:

  <HierarchicalDataTemplate  x:Key="DispTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Label}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}" Tag="{Binding Path=Tag}">
            </TextBlock>
        </StackPanel>
    </HierarchicalDataTemplate>
    <HierarchicalDataTemplate  x:Key="BuildingTemplate"  ItemsSource="{Binding Path=Building}" ItemTemplate="{StaticResource BuildingTemplate}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Label}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}"/>
        </StackPanel>
    </HierarchicalDataTemplate>
    <HierarchicalDataTemplate  x:Key="CityTemplate"  ItemsSource="{Binding Path=City}" ItemTemplate="{StaticResource CityTemplate}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=Label}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}"/>
        </StackPanel>
    </HierarchicalDataTemplate>
    <HierarchicalDataTemplate x:Key="CountryTemplate" ItemsSource="{Binding Path=Country}" ItemTemplate="{StaticResource CountryTemplate}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=RootName}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}"/>
        </StackPanel>
    </HierarchicalDataTemplate>

解决方案

You also can add the ContextMenu to any visual child in the data template, for instance:

<HierarchicalDataTemplate x:Key="CountryTemplate" ItemsSource="{Binding Path=Country}" ItemTemplate="{StaticResource CountryTemplate}">
    <StackPanel Orientation="Horizontal">
        <StackPanel.ContextMenu>
            <ContextMenu>
                 <MenuItem Header="Header" Command="{Binding Command}"/> <!--This command should be in the data context (each country item)-->
            </ContextMenu>
        </StackPanel.ContextMenu>
        <TextBlock Text="{Binding Path=RootName}" Style="{StaticResource TreeTextStyle}" ToolTip="{Binding Path=Description}"/>
    </StackPanel>
</HierarchicalDataTemplate>

这篇关于如何显示TreeView项上下文菜单中的WPF一个分层数据模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆