【问题标题】:Use DataTrigger to hide/show WPF TreeView ContectMenu使用 DataTrigger 隐藏/显示 WPF TreeView ContectMenu
【发布时间】: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?
  • 触发器正在工作,图标图像被应用。但是当我尝试右键单击树视图项以获取上下文菜单时,它给出了该异常。

标签: wpf vb.net xaml treeview


【解决方案1】:

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

here is the link

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

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 2021-12-01
    • 2011-02-09
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多