如何实现UWP应用启动时定位到屏幕左下角(任务栏上方)?
UWP主窗口启动时定位到屏幕左下角任务栏上方的解决方案
核心思路
主窗口并非无法获取AppWindow实例——从Windows 10 1903(内部版本18362)开始,可通过窗口ID直接关联主窗口的AppWindow对象,之后就能用和辅助视图一致的方法完成位置与大小调整。
实现步骤与代码示例
获取主窗口的AppWindow实例
在应用启动逻辑(如App.xaml.cs的OnLaunched方法)或主页面的Loaded事件中,通过当前核心窗口的ID获取对应的AppWindow:var coreWindow = Window.Current.CoreWindow; var mainAppWindow = AppWindow.GetFromWindowId(coreWindow.WindowId);计算目标位置与大小
获取当前显示器的有效显示区域(自动排除任务栏等系统UI),再根据需求计算窗口的左下角位置:// 获取当前视图的可见边界(已排除任务栏) var appView = ApplicationView.GetForCurrentView(); var visibleBounds = appView.VisibleBounds; // 自定义窗口尺寸(可根据需求调整,模仿开始菜单的大小) double targetWidth = 320; double targetHeight = 600; // 计算左下角坐标:X为显示区域左边界,Y为显示区域底部减去窗口高度 double targetX = visibleBounds.Left; double targetY = visibleBounds.Bottom - targetHeight;调整窗口大小与位置
调用AppWindow的异步方法完成尺寸调整与位置移动:// 先调整窗口大小 await mainAppWindow.RequestSizeAsync(new Size(targetWidth, targetHeight)); // 再移动到目标位置 await mainAppWindow.RequestMoveAsync(new Point(targetX, targetY));
注意事项
- 该方案仅支持Windows 10 1903及更高版本的系统;
- 若需适配多显示器场景,可通过
DisplayRegion类获取对应显示器的有效区域,确保窗口定位在当前活动显示器的左下角; - 建议将上述逻辑放在应用启动后的窗口激活阶段执行,避免因窗口未初始化导致的异常。
内容的提问来源于stack exchange,提问作者Muhammad Touseef
相关产品推荐
相关产品推荐

