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 控件对齐错误 的相关文章

  • 手动更新目标后,单向绑定停止工作

    我有这样的WPF绑定代码 TestModel source new TestModel TestModel target new TestModel Bind source target BindingMode OneWay source
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 将二进制数据从 C# 上传到 PHP

    我想将文件从 Windows C 应用程序上传到运行 PHP 的 Web 服务器 我知道 WebClient UploadFile 方法 但我希望能够分块上传文件 以便我可以监控进度并能够暂停 恢复 因此 我正在读取文件的一部分并使用 We
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map

随机推荐

  • 如何检查所有返回值是否均为 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 控件 以响应某些用户操作 在大多数情况下 它发生在鼠标单击某个文本块时 这