为WinRT应用程序实现细微通知

时间:2013-07-10 19:38:27

标签: c# windows-runtime

我想为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根从一个帧到一个网格可能会导致不必要的副作用?

enter image description here

1 个答案:

答案 0 :(得分:1)

在某种程度上取决于你的其他页面是什么样的,但像这样的叠加控件通常可以放在页面上的主容器内(无论是Grid还是Canvas或其他)作为最后一个元素(所以它将按z顺序排在最顶层,然后设置为不可见/折叠(直到需要)。在折叠时它不会干扰您的其他内容。