WPF 用户控件上下文菜单可见性绑定

2023-11-21

我的用户控件上下文菜单可见性无法绑定依赖属性。任何想法?

这是我的 WPF 代码

<UserControl.ContextMenu>
    <ContextMenu Visibility="{Binding ElementName=wellControl, Path=IsInCompactMode, Converter={StaticResource BooleanToVisibilityConverter}}">
    <MenuItem Command="local:GCommands.Edit" />
    <MenuItem Command="local:GCommands.Delete" />
    <MenuItem Command="local:GCommands.ExportFcsFiles" />
    <MenuItem Command="local:GCommands.BatchExportStatistics" />
    <Separator/>
    <MenuItem Command="local:GCommands.SaveAs" Header="Save As..." />
    </ContextMenu>
</UserControl.ContextMenu>

如果我设置 Visibility="Hidden" 它对我有用。 像这样:

<ContextMenu Visibility="Hidden"/>

如果使用这个它将不起作用

<ContextMenu Visibility="{Binding ElementName=wellControl, Path=IsInCompactMode, Converter={StaticResource BooleanToVisibilityConverter}}">

我很确定 Visibility="{Binding ElementName=wellControl, Path=IsInCompactMode, Converter={StaticResource BooleanToVisibilityConverter}}" 没有问题,因为它适用于其他人。

这是我的依赖属性

public bool IsInCompactMode
        {
            get {return (bool)GetValue(IsInCompactModeProperty); }
            set {SetValue(IsInCompactModeProperty, value); }
        }
        public static readonly DependencyProperty IsInCompactModeProperty =
            DependencyProperty.Register("IsInCompactMode", typeof(bool), typeof(WellControl), new PropertyMetadata(false));

我尝试了这个方法,好像还是不行,这真是奇怪!!!

<ContextMenu x:Name="menu" IsOpen="{Binding ElementName=wellControl, Path=IsInCompactMode}"> 

我真的很困惑,这是怎么了? “Binding ElementName=wellControl,Path=IsInCompactMode”适用于用户控件的其他部分,只是不适用于奇怪的上下文菜单?这没有道理


1> ContextMenu、Popup、DataGrid 列不是可视化树的一部分。所以绑定使用ElementName or RelativeSource不会像那样工作。

2> 当您希望在特定情况下不显示上下文菜单时,请使用触发器从视觉对象本身取消设置上下文菜单。

      <TextBlock Text="ContextMenu is not shown when DataContext.IsShow is false"}">
            <TextBlock.Style>
                <Style TargetType="{x:Type TextBlock}">
                    <Setter Property="ContextMenu"
                            Value="{StaticResource TextBlockContextMenu}" />
                   <Style.Triggers>
                       <DataTrigger Binding="{Binding IsShow}"
                                    Value="False">
                            <Setter Property="ContextMenu"
                                    Value="{x:Null}" />
                       </DataTrigger>   
                   </Style.Triggers>
                </Style>
            </TextBlock.Style>
      </TextBlock>

3> 为了将这些项目附加到可视化树,以便绑定工作,我们使用代理元素方法...

绑定数据网格列可见性MVVM

我更喜欢第二步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 用户控件上下文菜单可见性绑定 的相关文章

随机推荐

  • 在 Visio 2003 中使用 UML 2.0 的最佳方法是什么?

    Visio 2003 使用 UML 1 4 这意味着 UML 2 0 中的一些刻板印象根本不存在 它们需要通过手绘来建模 我可能还使用 Photoshop 有谁知道 Microsoft 的更新或在 Visio 2003 中包含 UML 2
  • 在 Bootstrap 3 中用 Glyphicons PRO 替换标准 Glyphicons Halfling?

    我已经购买了完整的 Glyphicons PRO 软件包 并希望将其与 Bootstrap 3 一起使用 但是 我似乎无法找到有关如何执行此操作的全面文档 Glyphicons 网站缺少 如何使用 部分 并且随附的 PDF 也没有太大帮助
  • 如何查看我的客户端应用程序发送的 SOAP 数据?

    我有一个项目 我使用 wsdl exe 创建了 Web 服务代理类 然后简单地创建该类的实例 继承 System Web Services Protocols SoapHttpClientProtocol 并调用应发送 SOAP 消息的方法
  • 在 Vista/Windows 7 WPF FileDialog.Filter 中隐藏扩展

    我在 NET 4 WPF 应用程序中使用 WPF OpenFileDialog 和 SaveFileDialog 我使用 Filter 属性来允许用户设置不同的文件过滤器 在 NET 4 中 这使用 Windows Vista 引入的本机文
  • Firestore 读取具有自身条件的规则

    我目前正在尝试在 firebase 上构建小型应用程序作为对其的评估 它看起来很有趣并且非常高效 但我对 Firestore 规则有一个问题 我有一个集合 游戏 其对象如下所示 name String description String
  • 垂直对齐 ggplot2 绘图

    代码位于https gist github com low decarie 5886616可以生成双树状图平铺图 Dual dendogram tile plot as matrix USArrests main 美国逮捕 问题 将垂直树状
  • C# 如何获取来电显示?

    我想使用 56K 调制解调器获取拨打家庭电话的电话号码 有没有办法用 C 来实现这一点 并非所有调制解调器都支持主叫号码 对于那些这样做的人 制造商之间的实施方式有所不同 呼叫者 ID 通过串行数据传递 因此您必须使用TAPI库 或使用 W
  • 如果我想要空插值(分段常数),那么 numpy.interp 的最佳替代品是什么?

    numpy interp很方便 也比较快捷 在某些情况下 我想将其输出与非插值变体进行比较 其中稀疏值被传播 在 更密集 的输出中 并且结果是稀疏输入之间的分段常数 我想要的函数也可以称为 稀疏 gt 密集 转换器 它复制最新的稀疏值 直到
  • React Native 和 THREE.js(WebGL 库)集成

    我正在开发一个使用 React Web 和 React Native 的项目 我已经实现了一个 React Web 组件 它允许您从 OBJ MTL 和图像文件加载 3D 模型 加载模型后您可以对其进行编辑 在其上附加 3D 标签等内容 最
  • 期望有根视图控制器控制台的应用程序

    当我运行我的应用程序时 我在控制台中收到一条消息 2011 11 16 19 17 41 292 Juice 8674 707 应用程序预计在应用程序启动结束时有一个根视图控制器 我听别人说这与方法有关didFinishLaunchingW
  • 我可以在卫星程序集中合并本地资源吗?

    我有很多本地资源文件 Controls App LocalResources SomeControl ascx resx Pages App LocalResources SomePage aspx resx 等 我想添加另一种语言 但我不
  • Windows 窗体:检测焦点控件的变化

    我正在 Windows 窗体应用程序中实现复制粘贴 当用户更改应用程序中的焦点元素时 我需要启用 禁用这两个操作的栏按钮 我可以使用这样的方法找到当前的焦点控件 http www syncfusion com FAQ windowsform
  • Delphi:确定泛型的实际类型?

    有什么方法可以确定作为参数传递给方法的变量的类型吗 考虑一下这个类 TSomeClass class procedure AddToList
  • 如何检查 mysqli_query 是否删除了任何行[重复]

    这个问题在这里已经有答案了 我创建了从数据库中删除一些数据的函数 这是其中的一部分 mysqli query con DELETE FROM appsdata WHERE ownerID 123 但我想检查删除了多少行 mysql quer
  • 通过查找/替换 (Ctrl+F) 删除 Eclipse 代码编辑器中的空行

    我想通过 Eclipse 代码编辑器中的查找 替换方法从代码中删除所有空白行 我使用了正则表达式 n s n找到所有空白行但出现错误 Incompatible line delimiter near index 55110 用任何字符串替换
  • 如何获取特定类型类实例的多态函数的类型?

    例如 输入 t ap在 GHCi 中给出结果 ap Monad m gt m a gt b gt m a gt m b 如果我已经知道我要使用的 Monad 实例是 gt r 如何查询类型ap对于那个特定的例子 As 激光烟说作为评论你可以
  • 使用 Eclipse/Tomcat 自动将第 3 方 jar 添加到 WEB-INF/lib [重复]

    这个问题在这里已经有答案了 我在 Eclipse 上设置了一个动态 Web 项目 并使用 Tomcat 7 作为我的 Web 服务器 它似乎不会自动将我添加到构建路径上的库中的第 3 方 JAR 放入 WEB INF lib 文件夹中 有没
  • 创建 IE 插件

    我正在寻找为 IE 8 或 9 制作插件的教程 你能给我提供资源吗 拜托 为了和平和其他一切 我已经知道我可以制作 FF 或 Chrome 插件 我want制作一个 IE 插件 Thanks 你见过吗这个网站
  • 如何使 C# 枚举与数据库中的表保持同步

    这是一个稍微简化的示例 我对其进行了更改以隐藏实际代码 我有一个数据库驱动的应用程序和一个单独开发的小工具 旨在与该应用程序一起使用 有一个表定义了枚举 但它可能会随着时间的推移而改变 假设某个应用程序 医疗 需要相当精确地跟踪一个人的性别
  • WPF 用户控件上下文菜单可见性绑定

    我的用户控件上下文菜单可见性无法绑定依赖属性 任何想法 这是我的 WPF 代码