INavigationService 作为 MainPage 构造函数参数
INavigationService as MainPage constructor argument
我有来自 Prism 模板的基本 Prism/Unity/Xamarin 表单应用程序。
如果我更改以下(添加参数)它会失败
public MainPage(INavigationService navigationService)
{
InitializeComponent();
}
容器可以工作,但以这种方式获取导航服务会导致找不到 MainPage。
是否有更好的方法让 ContentPage 获取导航服务,以便单击按钮可以导航到新页面?
我也尝试过从 OnInitialized 注册导航服务,正如我在一些示例中发现的那样,现在这是一个编译错误。
使用以下 packages/versions:
- Prism.Unity.Forms 6.2.0.pre4
- Prism.Forms 6.1.0.pre4
- Xamarin.Forms 2.2.0.45
- 统一 4.0.1
- Windows 10 个 UWP
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 存储库中的 文档 和示例:
我有来自 Prism 模板的基本 Prism/Unity/Xamarin 表单应用程序。
如果我更改以下(添加参数)它会失败
public MainPage(INavigationService navigationService)
{
InitializeComponent();
}
容器可以工作,但以这种方式获取导航服务会导致找不到 MainPage。
是否有更好的方法让 ContentPage 获取导航服务,以便单击按钮可以导航到新页面?
我也尝试过从 OnInitialized 注册导航服务,正如我在一些示例中发现的那样,现在这是一个编译错误。
使用以下 packages/versions:
- Prism.Unity.Forms 6.2.0.pre4
- Prism.Forms 6.1.0.pre4
- Xamarin.Forms 2.2.0.45
- 统一 4.0.1
- Windows 10 个 UWP
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 存储库中的 文档 和示例: