我想为Monotouch开发一个与BTProgressHud非常相似的小型可重用组件。但我目前仍然坚持如何将叠加层注入可视树而不会干扰页面内容。
更新
经过一段时间的试验后,我想出了这个想法,以便能够将叠加层与页面内容分离,将窗口内容从一个帧更改为一个可以托管根帧和网格的网格。任何通知元素。
App.xaml.cs
protected override async void OnLaunched(LaunchActivatedArgs args)
{
Grid rootGrid = Window.Current.Content as Grid;
if(rootGrid == null)
{
var rootFrame = new Frame();
rootGrid = new Grid();
rootGrid.Children.Add(rootFrame);
Window.Current.Content = rootGrid;
}
}
ProgressHud.cs
public static class ProgressHud
{
static void Show(string msg)
{
Grid rootGrid = Window.Current.Content as Grid;
// just for testing the concept
rootGrid.Children.Add(new ProgressRing { IsActive = true };
}
}
是否有人可以确认更改Window.Content根从一个帧到一个网格可能会导致不必要的副作用?
答案 0 :(得分:1)
在某种程度上取决于你的其他页面是什么样的,但像这样的叠加控件通常可以放在页面上的主容器内(无论是Grid还是Canvas或其他)作为最后一个元素(所以它将按z顺序排在最顶层,然后设置为不可见/折叠(直到需要)。在折叠时它不会干扰您的其他内容。