Bra*_*nda 5 windows win-universal-app
当我从通用应用程序的主窗口中单击按钮时,如何打开包含另一个xaml页面的新框架窗口?
你可以看看如何做到这一点从微软官方样品在GitHub上为能找到一个样本在这里,但我会很快在这里总结一下.另一个更简单的实现可以在Mike Taulty的博客上找到.
由于您没有指定开发语言,我将假设C#和XAML.
在XAML中创建您的按钮,单击该按钮以创建一个新窗口:
<Button
Content="Create"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Click="OnCreate" />
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,添加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);
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个新窗口,并获取原始窗口的应用程序视图ID供您参考.然后它等待一个调度的线程运行(在新窗口的UI线程中)以获得窗口包含的新视图,它SubWindowUserControl以编程方式添加新视图,然后激活(您必须记住这样做).然后使用一些标准参数在新的独立窗口中显示新窗口.
有关ApplicationViewSwitcher类的更多详细信息,请查看此处的API文档.
要获取此代码并使其显示新的XAML页面,您可以创建新页面并更改OnCreate代码中新窗口上运行的异步任务,如下所示:
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();
});
Run Code Online (Sandbox Code Playgroud)
这不是显示新的自定义XAML元素作为其内容,而是创建一个新的Frame,然后导航以显示您的XAML页面.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
4752 次 |
| 最近记录: |