我正在尝试进行简单的页面导航,但无法找到有关如何在 WinUI 3.0 中执行此操作的任何文档。
目前,当我使用 WinUI 3.0 创建空白应用程序时,我在 App.xaml.cs 中创建了以下代码
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
m_window.Activate();
}
private Window m_window;
虽然我在网上找到了许多其他示例,但根框架是在上面的 OnLaunched 事件中定义的。
我如何定义 MainWindow.xaml 或 App.xaml 以便获得一个可以在 Page1.xaml 和 Page2.xaml 之间自由切换的框架?
编辑:
我现在发现我可以通过调用来检索框架:
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
Frame rootFrame = m_window.Content as Frame;
m_window.Activate();
rootFrame.Navigate(typeof(UI.MainMenu));
}
但导航失败并显示System.NullReferenceException: 'Object reference not set to an instance of an object.'
错误。我做错了什么:S?
也许最好的方法是创建一个Frame
对象并将其分配给m_window
,而不是有一个专用的 XAML 窗口。我认为你可以简单地这样做:
this.m_window = new Window();
this.m_window.Content = rootFrame = new Frame(); ;
this.m_window.Activate();
rootFrame.Navigate(typeof(MainPage));
您需要重命名MainWindow
to MainPage
并将其根元素类型更改为Page
.
In your App
类,你可以暴露一个公共Navigate
委托给的方法rootFrame
's Navigate
。这样做,您将能够使用App.Current
从应用程序中的任何位置获取应用程序实例,从而导致应用程序的根框架在返回堆栈中向前导航。
或者,制作一个类似 Prism 的导航服务,在整个应用程序中提供导航服务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)