使用DataTrigger隐藏/显示WPF TreeView上下文菜单
我的WPF应用程序中有一个TreeView,我想根据TreeView项目的类型显示或隐藏上下文菜单。TreeView使用HierarchycalDataTemplate进行数据绑定和填充。我可以在rightmouse事件中禁用代码中的上下文菜单项。 但是我希望这是在XAML中完成的。我尝试的是使用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="
<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项目以获取上下文菜单时,它给出了异常。