如何在wpf中的分层数据模板中显示树视图项的上下文菜单

如何使用分层数据模板在wpf中显示树视图项的上下文菜单? 如何仅为CountryTemplate显示上下文菜单:

                     

您还可以将ContextMenu添加到数据模板中的任何可视子项,例如:

            
          

如您所见,您可以在HierarchicalDataTemplate的Itemcontainerstyle中添加contextmenu

基本上我想出了这个

                   

并且具有用于复制和粘贴的单独参数,以在单个命令中区分复制和粘贴。

上下文菜单无法尽可能干净地工作的原因之一是因为默认情况下,它们与其他所有内容处于不同的可视树中,因此无法找到DataContext

关键的见解是创建一个定义上下文菜单的

,然后将该样式附加到目标元素,该元素挂钩上下文菜单。 这会将上下文菜单转换为可视树,该树与您想要的默认DataContext对齐。

首先,创建风格:

        

然后,将上下文菜单挂钩到任何您想要的位置,而不会遇到由不同可视树引起的问题。

例1:

     

例2: