【发布时间】:2014-04-08 11:55:59
【问题描述】:
我的 WPF 应用程序中有一个 TreeView,我想根据 treeviewItem 的类型显示或隐藏上下文菜单。 TreeView 使用 HierarchicalDataTemplate 进行数据绑定和填充。我可以在鼠标右键事件中禁用代码中的上下文菜单项。 但我希望这可以在 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>
在 Treeview 中我有这段代码
<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?
-
触发器正在工作,图标图像被应用。但是当我尝试右键单击树视图项以获取上下文菜单时,它给出了该异常。