【发布时间】:2019-03-11 18:30:04
【问题描述】:
我正在一个项目中使用 Prism MVVM 架构和 Autofac,试图创建一个可以被其他视图使用的通用页脚导航栏。
我正在尝试将特定的绑定上下文从 View 的代码隐藏设置到 ViewModel - 但无法这样做,因为 viewmodel 的实例化需要导航服务的依赖项注入。
我有以下几点:
- .xaml 包含带有导航栏的内容视图 (NavigationBarView.xaml)
- 一个 .xaml 包含一个内容页面 不同的视图,包括导航栏视图(其他视图)
我正在插入部分视图:
<ContentPage
...
xmlns:pages="clr-namespace:MyProject.Views;assembly=Myproject"
.../>
<Layout
...
<pages:NavigationBarPage />
...
</Layout>
以及我的代码隐藏中的构造函数是这样的:
public CodeBehindConstructor() {
BindingContext = new NavigationBarViewModel(requires
navigationservice);
}
如果我可以在 NavigationBarView 后面的代码中创建 INavigationService 的实例,那将是可以解决的,但我一直无法找到这样做的方法。
我的 ViewModel 构造函数如下所示:
public NavigationBarViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
...
...
}
_navigationService 设置为未初始化的 INavigationService,这使服务无法使用。
NavigationBarView 和 NavigationBarViewModel 之间的绑定有效,但我不知道如何处理 INavigationService 的依赖注入。
【问题讨论】:
标签: xamarin.forms prism