如何使用带有 C++ 桌面应用程序的 WinUI3 导航到新页面?

How to navigate to a new page using WinUI3 with C++ desktop app?

首先,我在 Visual Studio.

中使用模板“空白应用程序,打包(桌面中的 WinUI)”创建了一个项目

然后我将 MainWindow.xaml 中的代码更改为一个简单的框架:

<Frame x:Name="rootFrame"></Frame>

然后我添加一个 BlankPage 并尝试像这样导航到 BlankPage:

rootFrame().Navigate(xaml_typename<BlankPage>());

然后visual studio给我报错:

winrt\Windows.UI.Xaml.Interop.h(643,29): error C2338: T must be WinRT type.

我不知道怎么办...

终于找到问题所在了。和命名空间有关,当我创建一个新的页面时,有三个命名空间:

winrt::PROJECTNAME::implementation::BlankPage
winrt::PROJECTNAME::factory_implementation::BlankPage
PROJECTNAME::BlankPage

我应该使用 BlankPage.idl

中定义的 PROJECTNAME::BlankPage