UWP应用能否实现可独立移动的悬浮窗口?
UWP 独立窗口实现方案
可以实现,UWP 原生支持创建完全脱离默认MainPage.xaml的独立窗口,可自由拖动到屏幕任意位置,和主窗口互相独立运行。
实现前提
你的项目目标 Windows 版本需至少为 Windows 10 1903(内部版本号 10.0.18362.0),低于该版本可以改用AppWindowAPI 做兼容处理。
具体实现步骤
- 第一步:新建一个自定义 XAML 页面作为独立窗口的内容载体,例如命名为
CustomWindowPage.xaml,自行编写页面内的业务逻辑和UI - 第二步:在触发打开独立窗口的位置添加如下代码:
// 引入所需命名空间 using Windows.ApplicationModel.Core; using Windows.UI.Core; using Windows.UI.ViewManagement; using Windows.UI.Xaml.Controls; // 创建全新的独立应用视图 CoreApplicationView independentView = CoreApplication.CreateNewView(); int independentViewId = 0; await independentView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { Frame rootFrame = new Frame(); // 直接关联你自定义的页面,完全不需要依赖MainPage rootFrame.Navigate(typeof(CustomWindowPage)); Window.Current.Content = rootFrame; Window.Current.Activate(); // 记录当前独立视图的ID independentViewId = ApplicationView.GetForCurrentView().Id; }); // 将新视图作为独立窗口弹出 await ApplicationViewSwitcher.TryShowAsStandaloneAsync(independentViewId);
补充说明
- 该方式创建的独立窗口和主窗口完全隔离,支持单独拖动、调整大小、最小化/最大化/关闭,操作主窗口不会影响独立窗口的状态
- 可以通过
ApplicationView.GetForCurrentView()的相关属性自定义独立窗口的标题、最小/最大尺寸、标题栏样式等参数 - 如果需要处理窗口之间的通信,可以通过静态变量、消息订阅等方式实现跨视图数据传递
内容的提问来源于stack exchange,提问作者vicNeo
相关产品推荐
相关产品推荐

