在 Windows 10 通用应用程序中从 MainPage 打开一个新框架 Window?

Open a New Frame Window From MainPage in Windows 10 Universal App?

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

您可以从 GitHub 上的 Microsoft 官方示例中查看有关如何执行此操作的示例,可以在 here but I'll summarize quickly here. Another simpler implementation can be found on Mike Taulty's Blog.

上找到

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

在 XAML 中创建您的按钮,单击该按钮将创建一个新的 window:

<Button  
Content="Create"  
HorizontalAlignment="Center"  
VerticalAlignment="Center"  
Click="OnCreate" />

在后面的代码中,添加您的 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);  
}

这将创建一个新的 window,并获取原始 window 的应用程序视图 ID 供您参考。然后它等待一个分派线程到 运行(在新 window 的 UI 线程中)以获取 window 包含的新视图,它添加了一个新的 SubWindowUserControl 到,以编程方式,然后被激活(你必须记住这样做)。然后使用一些标准参数在新的独立 window 中显示新的 window。

查看 API 文档 here 了解有关 ApplicationViewSwitcher class 的更多详细信息。

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

  await newCoreView.Dispatcher.RunAsync(  
    CoreDispatcherPriority.Normal,  
    () =>  
    {  
      newAppView = ApplicationView.GetForCurrentView();  
      Window.Current.Content = new Frame();
      (Window.Current.Content as Frame).Navigate(typeof(<your_page>));
      Window.Current.Activate();  
    });  

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

希望对您有所帮助!