从Windows 10 Universal App中的MainPage打开一个新框架窗口?

时间:2015-09-21 10:22:29

标签: windows win-universal-app

当我从通用应用程序的主窗口中单击按钮时,如何打开包含另一个xaml页面的新框架窗口?

1 个答案:

答案 0 :(得分:5)

您可以从GitHub上的官方Microsoft示例中查看有关如何执行此操作的示例here,但我将在此快速总结。另一个更简单的实现可以在Mike Taulty's Blog上找到。

由于您没有指定开发语言,我将假设C#和XAML。

在XAML中创建按钮,单击该按钮以创建新窗口:

/usr/local/bin/

在后面的代码中,添加OnCreate点击处理程序:

/usr/share/atom/

这会创建一个新窗口,并提取原始窗口的应用程序视图ID供您参考。然后它等待一个调度的线程运行(在新窗口的UI线程中)以获取窗口包含的新视图,它以编程方式添加新的<Button Content="Create" HorizontalAlignment="Center" VerticalAlignment="Center" Click="OnCreate" /> ,然后激活(您必须记住这样做)这个)。然后,使用一些标准参数在新的独立窗口中显示新窗口。

有关ApplicationViewSwitcher类的更多详细信息,请查看API文档here

要获取此代码并使其显示新的XAML页面,您可以创建新页面并更改OnCreate代码中新窗口上运行的异步任务,如下所示:

async void OnCreate(object sender, RoutedEventArgs e)  
{  
  CoreApplicationView newCoreView = CoreApplication.CreateNewView();  

  ApplicationView newAppView = null;  
  int mainViewId = ApplicationView.GetApplicationViewIdForWindow(  
    CoreApplication.MainView.CoreWindow);  

  await newCoreView.Dispatcher.RunAsync(  
    CoreDispatcherPriority.Normal,  
    () =>  
    {  
      newAppView = ApplicationView.GetForCurrentView();  
      Window.Current.Content = new SubWindowUserControl();  
      Window.Current.Activate();  
    });  

  await ApplicationViewSwitcher.TryShowAsStandaloneAsync(  
    newAppView.Id,  
    ViewSizePreference.UseHalf,  
    mainViewId,  
    ViewSizePreference.UseHalf);  
}

这不会显示新的自定义XAML元素作为其内容,而是创建一个新的SubWindowUserControl,然后导航以显示您的XAML页面。

Hello Second Window!

希望这有帮助!