使用DataTrigger隐藏/显示WPF TreeView上下文菜单

使用DataTrigger隐藏/显示WPF TreeView上下文菜单,wpf,vb.net,xaml,treeview,Wpf,Vb.net,Xaml,Treeview,我的WPF应用程序中有一个TreeView,我想根据TreeView项目的类型显示或隐藏上下文菜单。TreeView使用HierarchycalDataTemplate进行数据绑定和填充。我可以在rightmouse事件中禁用代码中的上下文菜单项。 但是我希望这是在XAML中完成的。我尝试的是 <Grid.Resources> <ContextMenu x:Key="MyContextMenu"> <MenuItem Name="Menu1" Header="

我的WPF应用程序中有一个TreeView,我想根据TreeView项目的类型显示或隐藏上下文菜单。TreeView使用HierarchycalDataTemplate进行数据绑定和填充。我可以在rightmouse事件中禁用代码中的上下文菜单项。 但是我希望这是在XAML中完成的。我尝试的是

<Grid.Resources>
<ContextMenu x:Key="MyContextMenu">
   <MenuItem Name="Menu1" Header="Add " Click="AddNew_Click" ></MenuItem>
   <MenuItem Name="Menu2" Header="" Click="Menu2_Click"></MenuItem>
</ContextMenu>
</Grid.Resources>

在树视图的旁边我有这个代码

<HierarchicalDataTemplate.Triggers>
       <DataTrigger Binding="{Binding Document.DocumentType}" Value="P">
             <Setter TargetName="icon"  Property="Source" Value="../Images/P.png"/>
             *<Setter Property="ContextMenu" Value="{StaticResource MyContextMenu}"/>*

       </DataTrigger>
 </HierarchicalDataTemplate.Triggers>

**
但这会导致运行时错误“对象引用未设置为对象的实例”。当DocumentType为“P”时,您可以看到图像设置了数据触发器,我希望上下文菜单仅在DocumentType为“P”时可见/启用,否则隐藏/禁用。
这可以做到吗?

另一个人也有同样的问题,他从微软论坛得到了这个答案。它不使用触发器,但是上下文是动态的。我可以使用它的一个变体来显示我的上下文菜单,这取决于绑定的数据


我会将此标记为已回答,以便将来可能对某人有所帮助。

您的问题不清楚。触发器坏了吗?还是崩溃来了?什么值为null?触发器正在工作,图标图像被应用。但是当我试图右键单击TreeView项目以获取上下文菜单时,它给出了异常。