多个windows、Windows通用
Multiple windows, Windows Universal
我想在 PC 上 运行 为我的 windows 通用应用再 windows 一个 windows。但令我惊讶的是,这似乎并不容易。例如,在 WPF 中,我可以向我的项目添加一个新项目,并且 select 和 window。在通用中,新项目中没有 "Window"。我可以声明一个 class windows.ui.xaml.window 的对象,但我无法实例化它(没有新的)或显示它。如何启动另一个 window?谢谢
有一个 sample available on Microsoft's UWP GitHub repo 涵盖了为您的应用程序创建多个视图。如果您需要,我可以提供更多信息或帮助
最终找到了一些非常简单的东西,按类型获取页面,创建它并在里面创建一个 window,然后 returns 创建页面对象:
async Task<Page> CreatePageWindowAsync(Type p)
{
CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
Page pg = null;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Frame frame = new Frame();
frame.Navigate(p, null);
Window.Current.Content = frame;
Window.Current.Activate();
newViewId = ApplicationView.GetForCurrentView().Id;
pg = frame.Content as Page;
});
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
return (pg);
}
我想在 PC 上 运行 为我的 windows 通用应用再 windows 一个 windows。但令我惊讶的是,这似乎并不容易。例如,在 WPF 中,我可以向我的项目添加一个新项目,并且 select 和 window。在通用中,新项目中没有 "Window"。我可以声明一个 class windows.ui.xaml.window 的对象,但我无法实例化它(没有新的)或显示它。如何启动另一个 window?谢谢
有一个 sample available on Microsoft's UWP GitHub repo 涵盖了为您的应用程序创建多个视图。如果您需要,我可以提供更多信息或帮助
最终找到了一些非常简单的东西,按类型获取页面,创建它并在里面创建一个 window,然后 returns 创建页面对象:
async Task<Page> CreatePageWindowAsync(Type p)
{
CoreApplicationView newView = CoreApplication.CreateNewView();
int newViewId = 0;
Page pg = null;
await newView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Frame frame = new Frame();
frame.Navigate(p, null);
Window.Current.Content = frame;
Window.Current.Activate();
newViewId = ApplicationView.GetForCurrentView().Id;
pg = frame.Content as Page;
});
bool viewShown = await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newViewId);
return (pg);
}