Windows 10 上的 ContextMenu 和 Popup WPF 控件对齐错误

2024-04-19

这确实是一个奇怪的问题,我希望有人知道如何解决。 情况:

  1. 我们的 WPF 项目有一个表单,我们在其中显示上下文菜单(ContextMenu 控件)和弹出窗口(Popup 控件)以响应某些用户操作。在大多数情况下,它发生在鼠标单击某个文本块时。 这是一个例子:

            popup = new Popup {
                Placement = PlacementMode.Relative,
                PlacementTarget = textBlock,
                StaysOpen = false
            }; 
    
            .   .   .   .   .
            //later on mouse click:
            popup.IsOpen = true;
    
  2. 弹出窗口必须与其放置目标(我们示例中的某些文本块)的左上角对齐,因此 - 与其重叠。除了具有平板电脑模式的 Windows 10 计算机(例如 MS Surface Pro)之外,它在所有情况下都能正常工作。 在这种环境中,我们的弹出窗口出现在放置目标的左侧,因此不要与它们重叠。

我们发现发生这种情况是因为本文中描述的特殊 Windows 10 选项:http://www.isunshare.com/windows-10/show-context-menu-on-left-or-right-in-windows-10.html http://www.isunshare.com/windows-10/show-context-menu-on-left-or-right-in-windows-10.html

该选项默认设置为“右手”(这是可以理解的),但我不明白为什么它会以这种方式影响弹出控件以及为什么它甚至在桌面模式下也会发生。

如果能找到一种方法来更改此默认行为并使我们的弹出窗口在任何情况下都与父控件的左上角对齐,那就太好了。 有人知道该怎么做吗?


您可以指定一个PlacementRectangle:

<Border Width="300" Height="20" Background="Yellow">
  <Popup IsOpen="True" Placement="Left">
      <Popup.PlacementRectangle>
        <Rect X="0" Y="20" Width="0" Height="0" />
      </Popup.PlacementRectangle>
    <Border Width="100" Height="100" Background="Blue"></Border>
  </Popup>
</Border>

即使使用右手平板电脑模式,它看起来也像这样:

这里的技巧是Y属性设置为正确的高度。如果您有固定高度的弹出窗口,那可能没问题。否则你可以尝试 bing 到内容的ActualHeight,但作为Rect.Y不是您需要转换器的依赖属性double to Rect为了这个目的。

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

Windows 10 上的 ContextMenu 和 Popup WPF 控件对齐错误 的相关文章

  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 如何检查所有返回值是否均为 true?

    有没有一种简单的方法来确保所有返回的值都是 True 在下面的示例中 我有一个代表文件的对象集合 我想在继续之前确保所有源文件都存在 我将所有路径传递给 Test Path 该函数为每个文件返回 True False gt filesToU
  • 如何使用 NSJSONSerialization 类参考读取 JSON 文件?

    我需要使用 NSJSONSerialization 类参考来读取 JSON 文件 并且我找到的有关使用此类的所有示例都是从网页本身读取内容 而不是从之前创建的 JSON 文件中读取内容 任何人都知道如何使用该类解析 JSON 文件 谢谢 简
  • 如何在没有机器人的情况下使用 Telegram API?

    我不需要回复机器人 我只想进行只读调用来读取频道历史记录 也许我需要 该方法https core telegram org method messages getHistory https core telegram org method
  • jQuery ajax 处理 401 未经授权

    我正在使用 jQuery ajax 调用第三方网页 根据他们的页面 如果登录成功 他们向我发送状态代码 200 如果登录不成功 他们向我发送状态代码 401 这是我的 jquery 代码示例 此代码在 IE 上运行良好 但在 Chrome
  • Chrome 不断加载我网站的旧缓存

    我遇到了这个奇怪的问题 我的 Chrome 浏览器不断加载旧版本的网站 其代码甚至不再存在于我的服务器上 我认为这是一个典型的缓存问题 我尝试清理浏览器缓存 使用隐身模式并清除 DNS 缓存 旧的缓存页面仍在加载 这个问题似乎已经在这个谷歌
  • 无法向分组数据框添加行

    这是这个问题的后续问题如何将行添加到数据框中仅修改某些列 https stackoverflow com questions 71095723 how to add a row to a dataframe modifying only s
  • IOException:错误=7,参数列表太长,命令行很大

    我需要从 Java 调用 Unix 命令 代码如下 String strCmd iconv f strSrcEncoding t strTgtEncoding lt lt lt InputMessage String commands ba
  • android viewpager 更改适配器

    我正在开发一个带有 ViewPager 的应用程序 用于横向滚动表 有时我需要更改适配器以加载一组不同的表 我尝试执行以下操作 mViewPager setAdapter new pagerAdapterPushed getSupportF
  • 如何存储查询执行计划以便以后使用

    我的应用程序对 SQL Server 数据库运行查询 在许多情况下 我可以看到执行计划的好处 例如 我第一次单击按钮 SELECT from Tasks WHERE IdUser 24 AND DATE lt 12 12 2010 and
  • didUpdateToLocation 未调用

    我想接收位置更新 我已将位置委托添加到标头 interface AppDelegate UIResponder
  • Python约束非线性优化

    python 中约束非线性优化的推荐包是什么 我试图解决的具体问题是 我有一个不为人知的X Nx1 我有M Nx1 u向量和M NxN s矩阵 max 5th percentile of ui T X i in 1 to M st 0 lt
  • 将数据更新到插入正确行的数据库中

    我在将数据更新到数据库时遇到问题 当我运行代码时 它将输入以3061 to 3070它应该从哪个开始3001 to 3010 当我尝试这个时 for next day program id in zip nextday list progr
  • 使用 HttpHandler 流式传输数据库图像

    很长一段时间以来 当我在本地计算机上处 理涉及数据库图像的 Web 应用程序项目时 我注意到一些烦人的事情 我所说的本地是指我的工作站上装有 VS 2008 和 SQL Server 2005 的典型环境 每当我使用 HttpHandler
  • HSQL 序列的语法问题:“NEXTVAL”而不是“NEXT VALUE”

    我在 Jetty 服务器上部署了 Web 应用程序 并连接到位于 HSQLDB 服务器上的 HSQLDB 数据库 当我尝试创建实体时出现此错误 错误 org hibernate util JDBCExceptionReporter 意外的标
  • 我应该使用哪些库在 python 中进行线性编程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 快速搜索 python 线性编程 会出现很多搜索结果 例如this one http wiki pyt
  • 等距 DIV 的流体宽度 + 最后一行左对齐

    我在流体布局和文本对齐中有固定宽度的框 使用此发布的解决方案来调整它们 等距 DIV 的流体宽度 https stackoverflow com questions 6865194 fluid width with equally spac
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件
  • 在iOS中使用AVPlayer你可以知道当前的.ts文件或编码器的当前时间戳吗?

    由于我们无法从 AVPlayer 中获取隐藏式字幕数据或字幕数据 因此我们正在研究其他触发方法 例如时间码或至少了解当前活动的 ts 文件 我在文档中找不到任何内容 并且播放器的 CMTime 没有给我嵌入 m3u8 文件中的时间码 NSL
  • 在 NetBeans 中格式化完整项目

    要在编辑器中格式化文件 请按 Alt Shift F 有没有办法在 NetBeans 中格式化完整的项目 6 8 如果这有什么区别 选择要缩进的文件夹 然后 转到 在 netbeans 菜单中 源 格式
  • Windows 10 上的 ContextMenu 和 Popup WPF 控件对齐错误

    这确实是一个奇怪的问题 我希望有人知道如何解决 情况 我们的 WPF 项目有一个表单 我们在其中显示上下文菜单 ContextMenu 控件 和弹出窗口 Popup 控件 以响应某些用户操作 在大多数情况下 它发生在鼠标单击某个文本块时 这