我正在使用Xamarin Forms和Prism。我使用Prism INavigationService完成页面之间的导航。我有一个Xamarin Forms ContentPage和许多具有自己View Model的子ViewView。当我点击一个孩子ContentView时,我想用儿童ContentView的一些属性导航到另一个ContentPage。我想知道是否有可能将父视图模型INavigationService传递给子ViewView视图模型?还是有其他的最佳做法可以用来满足我的要求吗?如何从父ContentPage ViewModel将INavigationService传递给子ViewView ViewModel?
0
A
回答
0
你需要做的是,一旦你注册使用RegisterForNavigation <页的页面注册您的prismApplcation页面是useually你的App.xaml >,那么你可以在页面的构造就像注入INavigationService这
private INavigationService _navigationService;
public MyPage(INavigationService navigationService)
{
_navigationService = navigationService
}
Alternativly你可以做同样的事情(推荐)在页面视图模型,但你需要确保在页面的XAML文件打开自动定位。
如果您要在内容页面之间导航,则是这种情况。然而,在你的情况下,你有多视图,每个视图都有自己的视图模型,虽然这是违反规则的,因为视图基本上可以从他们的页面共享视图模型,但是如果你坚持这样做,我唯一的建议,无需查看代码,就是使用与注册页面相同的容器为每个视图注册视图模型。使用注册类型<>()为此,你会发现Inavigationservice将被注入。 再一次,我认为你最好改变你的代码设计。
0
目前唯一的解决方法是为子视图模型断开自动布线。我在我的内容页面视图模型中创建了所有子视图模型作为成员变量,并将它们绑定到XAML中的视图。它现在正在工作。我不确定这是最佳做法。如果有人发现有更好的解决方案,请让我知道。
相关问题
- 1. 如何将CommandParameters传递给ViewModel?
- 2. 如何将viewmodel传递给控制器?
- 3. 如何将viewmodel传递给PagedList
- 4. 将Parm从App.xaml传递给ViewModel - Silverlight MVVM
- 5. MVVMCROSS - 将参数传递给ViewModel
- 6. 传递或从父ViewModel获取值到Sub-ViewModel?
- 7. 将linq查询结果传递给viewmodel
- 8. KnockoutJS将viewModel传递给函数
- 9. 将IEnumerable <Object>传递给ViewModel - 对象是否需要ViewModel?
- 10. MvxCachingFragmentStatePagerAdapter将参数传递给viewmodel
- 11. 将MainWindow实例传递给ViewModel
- 12. ContextMenu将多个参数传递给viewmodel
- 13. wpf mvvmlight将数据传递给viewmodel
- 14. 如何将参数从parentViewModel传递给ViewModel?
- 15. MVVM:如何将参数传递给ViewModel的构造函数
- 16. 如何将UI调度程序传递给ViewModel
- 17. 棱镜MVVM - 如何将IEventAggregator传递给我的ViewModel
- 18. 如何使用DelegateCommand将View中的信息传递给ViewModel?
- 19. 如何将绑定数据项传递给ListBox项的ViewModel?
- 20. Silverlight启动参数传递给viewmodel
- 21. WPF如何从MVVM中的子ViewModel调用父ViewModel中的某些逻辑
- 22. 传递ViewModel与jQuery后?
- 23. 将对象传递给用户控件在asp.net中的ViewModel mvc
- 24. MVVM - 如何将ViewModel包装在ViewModel中?
- 25. Silverlight将视图中的值传递给ViewModel MVVM
- 26. 将多个参数(包括类型)传递给WPF中的ViewModel
- 27. 通过查询字符串将枚举值传递给CaliburnMicro viewmodel
- 28. 从ViewModel传递数据到DataModel
- 29. 从ViewModel传递数据到javascript
- 30. 从JS传递viewmodel到控制器?
嗨BraveHeart,感谢您的回复。注册仅适用于ContentPages,不适用于ContentViews。我的子对象是ContentView类型的。所以注册不起作用。 –