我有一个使用一些ContentDialogs的UWP应用程序 . 我看到它们出现在PopupRoot可视化树中 . 我需要在所有其他可视树之上的另一个类似PopupRoot的可视树,它将具有半透明背景和繁忙指示符,这将阻止用户与应用程序交互,同时保留应用程序外观和应用程序状态,直到忙碌指标已完成 .
如下图所示,visual studio在调试时会执行此操作以注入实时可视化树工具 . (它是PopupRoot下面的Grid) .
由于UWP / WinRT的源代码不可用,我很难搞清楚这一点 . 我找到了PopupRoot的WPF源代码,但它只是边际有用 .
如果这是不可能的,我将必须在主RootScrollViewer可视树中实现我自己的弹出根,并在那里显示我的所有对话框 . 这将是我想避免的大量工作 .
2 回答
您可以创建一个“shell”页面,其中包含一个包含应用程序页面的Frame,之后您可以定义某种忙碌指示符,然后在需要时启动/关闭它 . 因为它是在XAML树中的帧之后定义的,所以它将出现在它的顶部 .
以下是
AppShell.xaml
页面内的内容片段在代码隐藏
AppShell.xaml.cs
中,您可以提供一个公共方法:现在,只要你需要打开忙碌指示器,你就可以这样做:
这绝对不是最干净的解决方案,您应该以某种方式封装它,这样您就不需要查询当前窗口,但基本思想成立 .
所以我猜答案是否定的 . 我最终在主RootScrollViewer可视化树中实现了我自己的弹出式根,就像我在放弃ContentDialog控件的问题中所述 .
谢谢所有回复试图帮助的人!