我正在使用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類型的。所以註冊不起作用。 –