C# 为WinRT应用程序实现微妙的通知

C# 为WinRT应用程序实现微妙的通知,c#,windows-runtime,C#,Windows Runtime,我想开发一个小的可重用组件,它与Monotouch非常相似。但我目前一直在研究如何在不干扰页面内容的情况下将覆盖注入到可视化树中 更新: 经过一段时间的试验,我想到了一个想法,为了能够将覆盖层与页面内容分离,将窗口内容从一个框架更改为一个网格,该网格可以承载根框架和任何通知元素 App.xaml.cs protected override async void OnLaunched(LaunchActivatedArgs args) { Grid rootGrid = Window.Curr

我想开发一个小的可重用组件,它与Monotouch非常相似。但我目前一直在研究如何在不干扰页面内容的情况下将覆盖注入到可视化树中

更新:

经过一段时间的试验,我想到了一个想法,为了能够将覆盖层与页面内容分离,将窗口内容从一个框架更改为一个网格,该网格可以承载根框架和任何通知元素

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 };
  }
}
是否有人可以确认是否将窗口。内容根从一个框架更改为一个网格会导致不必要的副作用


在某种程度上取决于页面的其他部分是什么样的,但是像这样的覆盖控件通常可以作为最后一个元素放在页面的主容器中(无论是网格还是画布或其他),然后设置为不可见/折叠(直到需要)。它在折叠时不会干扰其他内容

这将是一个解决办法,但几乎不值得重复使用:-)不知道你的意思。您可以按照自己的意愿对可重用控件进行编码/设计,然后确保在使用时将其粘贴在正确的位置。我认为这个控件仍然是可重用的。我想你可能不想把它添加到每一页?这就是你的意思吗?在这种情况下。。。您的页面是否有可以修改的基类?如果是这样,您可以将其添加到加载(或类似)事件的处理程序中的可视化树中。您最后使用了这个吗?我也有同样的问题。