INavigationService 作为 MainPage 构造函数参数

INavigationService as MainPage constructor argument

我有来自 Prism 模板的基本 Prism/Unity/Xamarin 表单应用程序。

如果我更改以下(添加参数)它会失败

public MainPage(INavigationService navigationService)
{
    InitializeComponent();
}

容器可以工作,但以这种方式获取导航服务会导致找不到 MainPage。

是否有更好的方法让 ContentPage 获取导航服务,以便单击按钮可以导航到新页面?

我也尝试过从 OnInitialized 注册导航服务,正如我在一些示例中发现的那样,现在这是一个编译错误。

使用以下 packages/versions:

Prism 是一个框架,可帮助您使用 MVVM 创建应用程序。如果您仔细阅读 MVVM 和使用的实践,您会注意到页面中的代码应保持最少,并且逻辑已移至视图模型。

将此应用于您的代码,您不应将 INavigationService 添加到您的页面,因为导航应从视图模型完成。

现在我听到你在问:"but how do I get from my click to the viewmodel?"。这是通过使用命令完成的。

<Button Text="Navigate to speak page" Command="{Binding NavigateToSpeakPageCommand}" />

我建议您查看 Prism 存储库中的 文档 和示例: