当前位置: 首页 > news >正文

Avalonia UI获取Popup显示位置,可解决异常显示其他应用程序的左上角

1.通过 PlacementTarget 获取位置

如果 Popup 是相对于某个控件(PlacementTarget)显示的,你也可以获取该控件的位置,然后计算 Popup 的相对位置。

// 假设 popup 是你的 Popup,target 是你的目标控件(PlacementTarget)
var target = popup.PlacementTarget as Control;
if (target != null)
{// 获取目标控件在屏幕中的位置var targetPosition = target.PointToScreen(new Point(0, 0));// 获取 Popup 的偏移var horizontalOffset = popup.HorizontalOffset;var verticalOffset = popup.VerticalOffset;// 计算 Popup 的实际位置var popupPosition = new Point(targetPosition.X + horizontalOffset, targetPosition.Y + verticalOffset);Console.WriteLine($"Popup 实际显示位置: X={popupPosition.X}, Y={popupPosition.Y}");
}

可用于异常显示在其他应用程序的左上方,此时的popupPosition.X是小于0的

2.构建App时设定OverlayPopups = true

var app = AppBuilder.Configure<App>().UsePlatformDetect().With(new X11PlatformOptions{}).With(new Win32PlatformOptions{OverlayPopups = true,WinUICompositionBackdropCornerRadius = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ((Environment.OSVersion.Version.Build >= 22000) ? 8 : 0) : 0}).With(new AvaloniaNativePlatformOptions(){      }).UseReactiveUI().LogToTrace(LogEventLevel.Warning);
return app;

http://www.lryc.cn/news/462684.html

相关文章:

  • 新版Win32高级编程教程-学习笔记01:应用程序分类
  • 无需编程知识 如何用自适应建站系统创建专业网站 带完整的安装代码包以及搭建部署教程
  • 萤石云服务支持云端视频AI自动剪辑生成
  • Flink移除器Evictor
  • R语言实现多元线性回归高杠杠点,离群点分析
  • overfrp内网穿透:使用域名将内网http/https服务暴露到公网
  • springboot034在线商城系统设计与开发-代码(论文+源码)_kaic
  • 什么是第三范式(3NF)?为什么要遵守第三范式?
  • 大数据比对,shell脚本与hive技术结合
  • 【Linux安全基线】- CentOS 7/8安全配置指南
  • PDF.js的使用及其跨域问题解决
  • Linux Redis查询key与移除日常操作
  • 开源两个月,antflow后端项目全网获近100星
  • 设计模式——工厂方法模式(2)抽象工厂模式(3)
  • 简单聊聊System V下的IPC + 内核是如何管理该IPC
  • 【WRF工具】服务器上安装convert_geotiff
  • RPC通讯基础原理
  • JavaScript 第18章:安全性
  • 基于workbox实现PWA预缓存能力
  • 探索Web3生态系统:社区、协议与参与者的角色
  • 无人机电机故障率骤降:创新设计与六西格玛方法论双赢
  • samba禁用时拷贝服务器文件到本地的脚本
  • C#代码 串口通信晋中A2板,控制直流电机
  • 3 机器学习之假设空间
  • 基于STM32的风速风向传感器设计
  • 域名申请.
  • mysql5.7与mysql8.0身份认证插件的区别
  • 进化吧!原始人
  • SaaS架构:中央库存系统架构设计
  • C语言中点操作符(.)和箭头操作符(->)的区别