树视图上下文菜单命令未触发

2024-05-15

我有一个绑定到某些属性类型的 Observable 集合的树视图。有一个 HierarchicalDataTemplate 在树视图中显示数据。现在我需要显示每个 HierarchicalDataTemplate 项目的特定上下文菜单。

我使用以下 XAML 来显示上下文菜单:

<HierarchicalDataTemplate ItemsSource="{Binding Collections}">
            <TextBlock Text="{Binding Path=Name}">
            <TextBlock.ContextMenu>
                    <ContextMenu>
                        <MenuItem Header="Create" Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.AddCommand}" CommandParameter="{Binding}"/>
                    </ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
        </HierarchicalDataTemplate>

这里,AddCommand 被写入视图模型中,并在控制下绑定到此视图模型。 我可以看到上下文菜单,但单击菜单项时不会触发事件。

请帮忙..


您的命令绑定将不起作用,因为 ContextMenu 与您的 UserControl 不在同一逻辑树上,因此它将找不到 UserControl 祖先。但是,您的 ContextMenu 应自动继承其容器的数据上下文。 所以这应该有效 -

<ContextMenu>
      <MenuItem Header="Create" Command="{Binding AddCommand}" CommandParameter="{Binding}"/>
</ContextMenu>

但是,AddCommand 属性应该存在于 HierarchicalDataTemplate 绑定项上。

EDIT:

如果您的命令未在 HierarchicalDataTemplate 的绑定项中定义,而是在 UserControl 中定义。然后,您可以尝试的另一个想法是为您的 UserControl 指定一个名称,然后通过 ElementName 将命令绑定到它。像这样

再次更新:

<ContextMenu>
      <MenuItem Header="Create" Command="{Binding ElementName="MyUserControl" Path="DataContext.AddCommand"}" CommandParameter="{Binding}"/>
</ContextMenu>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树视图上下文菜单命令未触发 的相关文章

  • TextBlock TextWrapping 不换行 #2

    好吧 那么this https stackoverflow com questions 6625177 textblock textwrapping not wrapping解决方案没有帮助 XAML 在这里
  • 将字符串数组添加到组合框

    我有一个组合框 我想加载一个从方法返回的字符串数组 我目前只是用 for 循环加载它 但我认为应该可以将字符串数组直接分配给组合框 我只是想改进我的代码 我已经做了一些搜索 并且看到了使用数据范围或数据源的答案 但这些似乎都不起作用 我也尝
  • 列表元素之间的 Tab WPF

    我有一个列表框 其中每个项目都使用文本框表示 问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间进行切换 当前 和正常的 WPF 行为 是 当我按 Tab 键进入列表框时 第一个元素会突出显示 如果我再次按
  • 如何让 DataTemplate.DataTrigger 检查大于或小于?

    下列DataTemplate DataTrigger如果是 则使年龄显示为红色equal to 30 如果是的话 如何使年龄显示为红色比 更棒 30
  • WPF圆形奇怪边框

    Hi 我现在已经尝试了 2 天多的时间来创建处于按下状态的切换按钮 如上图所示 但上边框让我头疼 有谁知道如何创建向下的圆角 背景是从上到下的线性渐变 b8c7d6 a8b3c4 任何帮助将不胜感激 我有这样的东西 但它与设计相去甚远
  • WPF 中的 IWin32Window

    我有一个 excel AddIn 它公开 IWin32Window 作为它的主 UI 我想显示一个使用它作为父窗口的 WPF 窗口 我该如何去做呢 您可以使用窗口互操作助手 http msdn microsoft com en us lib
  • 尝试在 Expression-Blend 4 中打开在 Visual Studio 2010 中创建的 WPF 项目时出现问题

    我在 VS 2010 中创建 WPF 项目 在完成功能性 GUI 的工作后 我想在 Blend 4 中编辑控件模板 但是当我在 Blend 中以 DesignMode 打开项目时 他告诉我 无效的 XAML 在结果窗口中他写道 Window
  • XAML WPF 如何在 FlowDocument 上添加内嵌背景图像?

    下面的代码是给Flow Document添加背景图片
  • 如何使用C#在WPF上的图像控件中显示位图图像

    我希望当我双击其中的一行时ListView 它应该显示Image对应于该行 该行还包含Image 我尝试了以下但显示相同Image对于所有行 因为我已经给出了特定的路径Image private void ListViewEmployeeD
  • WPF DataGrid - 将 TimeSeries 与 MultiBinding 相结合,丢失更改通知。为什么?

    我有一个具有两个 ObservableCollection 的类 其中 TimeValue 是带有更改通知的自定义日期时间 值配对 通过 INotifyPropertyChanged 我将这些称为 目标 和 实际值 当我将它们绑定到图表时
  • 基于动态资源的样式

    看来这样的事情是不允许的 有什么解决办法吗
  • MouseDoubleClick 事件不会冒泡

    我的场景经过简化 我有一个包含员工行的 ListView 在每个员工行中 都有 增加 和 减少 按钮来调整他的工资 假设在我的程序中 双击 员工 行意味着 解雇此人 The problem是当我快速单击 增加 时 这会触发 ListView
  • 如何正确对齐 WPF GeometryGroup 中的路径?

    我正在使用一个GeometryGroup在圆的中心绘制一个符号 下面的示例显示了我在对此进行实验时的尝试之一 它具有从同一原点 32 32 出发的三条直线
  • 如何从 WPF 应用程序访问 Windows 文件预览图标

    我在一个目录中有一堆图片和视频 需要在WPF应用程序中显示 我正在考虑将Win7大图标本身显示为预览图像 因为这将节省我从视频文件中抓取适当帧的工作 因为 Windows 已经很好地完成了这项工作 有任何代码片段可以访问此 Shell 图标
  • 将 MouseBindings 添加到数据绑定 WPF ListView 中的项目

    我试图在用户单击 ListView 中的项目时执行 ViewModel 中的命令 当我添加一个ListViewItem在 XAML 中我可以添加一个MouseBinding to its InputBindings
  • 如何检索 ComboBox 选定的值作为枚举类型?

    这是我的Enum code public enum EmployeeType Manager Worker 我将初始化ComboBox值 而表单将自身初始化为 combobox1 ItemsSource Enum GetValues typ
  • 如何在不修改以前的文本的情况下更改 WPF RichTextBox 中的 FontFamily

    当您使用 RichTextBox 的 FontFamily 属性时 它会更改 FlowDocument 内整个内容的 FontFamily 就像执行 EditingCommands ToggleBold 这样的命令一样 它仅更改插入符号下的
  • WPF 和 ClickOnce

    MSDN 未将 WPF exe 列为 ClickOnce 支持的应用程序类型 ClickOnce 应用程序是任何 Windows Presentation Foundation xbap Windows 窗体 exe 控制台应用程序 exe
  • WPF C# 输入框

    我正在使用 C 构建 WPF 应用程序 我想弹出一个对话框提示用户输入他 她的名字 之后 我将跟踪该名称并将一些数据保存到 txt使用该名称的文件 例如 输入的名称是姓名 约翰 所以我有数据数据 1 2 3 然后我将 数据 保存在John
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus

随机推荐