INAVigationService作为MainPage构造函数参数

时间:2016-06-06 21:14:22

标签: c# unity-container xamarin.forms prism uwp

我有Prism Templates的基本Prism / Unity / Xamarin Forms应用程序。

如果我更改以下内容(添加参数),则会失败

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

容器有效但以这种方式获取导航服务会导致无法找到MainPage。

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

我还尝试从OnInitialized注册导航服务,就像我在一些示例中找到的那样,现在是编译错误。

使用以下包/版本:

  • Prism.Unity.Forms 6.2.0.pre4
  • Prism.Forms 6.1.0.pre4
  • Xamarin.Forms 2.2.0.45
  • Unity 4.0.1
  • Windows 10 UWP

1 个答案:

答案 0 :(得分:3)

Prism是一个使用MVVM帮助您创建应用的框架。如果您阅读MVVM以及所使用的实践,您会注意到页面中的代码应该保持最小,逻辑将移动到视图模型。

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

现在我听到你问:“但我如何从点击进入视图模型?”。这是通过使用命令完成的。

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

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