2014-03-06 23 views
0

我在我的WPF应用程序中有一个TreeView,我想显示或隐藏上下文菜单,具体取决于treeviewItem的类型。 TreeView是数据绑定并使用HierarchicalDataTemplate填充。我可以禁用rightmouse事件代码中的上下文菜单项。 但我希望在XAML中完成此操作。我试过的是;使用DataTrigger来隐藏/显示WPF TreeView ContectMenu

<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'时隐藏/禁用上下文菜单,否则隐藏/禁用。 可以这样做吗?

+0

你的问题不清楚。触发器不工作?或崩溃来了是问题?什么值为空? –

+0

触发器正在工作,图标图像被应用。但是当我尝试右键单击treeviewitem以获取上下文菜单时,它会给出该异常。 – voddy

回答

0

另一个人有同样的问题,他从微软论坛得到了这个答案。它不使用触发器,但是上下文是动态的。我可以使用这种变化来显示我的上下文菜单,只有当我需要它时根据绑定的数据。

here is the link

我将标志着这个作为回答,所以它可能会帮助别人的未来。