我有Prism Templates的基本Prism / Unity / Xamarin Forms应用程序。
如果我更改以下内容(添加参数),则会失败
public MainPage(INavigationService navigationService)
{
InitializeComponent();
}
容器有效但以这种方式获取导航服务会导致无法找到MainPage。
ContentPage是否有更好的方法来获取导航服务,以便点击按钮可以导航到新页面?
我还尝试从OnInitialized注册导航服务,就像我在一些示例中找到的那样,现在是编译错误。
使用以下包/版本:
答案 0 :(得分:3)
Prism是一个使用MVVM帮助您创建应用的框架。如果您阅读MVVM以及所使用的实践,您会注意到页面中的代码应该保持最小,逻辑将移动到视图模型。
将此应用于您的代码,您不应将INavigationService
添加到您的网页,因为导航应该从视图模型中完成。
现在我听到你问:“但我如何从点击进入视图模型?”。这是通过使用命令完成的。
<Button Text="Navigate to speak page" Command="{Binding NavigateToSpeakPageCommand}" />
我建议您查看文档以及Prism存储库中的示例: