2017-04-18 76 views
0

在我的MainView中,我有一個存在於應用程序生命週期的MainViewModel。(UWP)如何從diff中訪問viewmodel的屬性/方法。視圖模型?

我的MainView有一個嵌入WITHIN框架本身。

從該框架導航到每個頁面都有自己的ViewModel(我認爲這種方法是一個很好的模式?)。我們將這些視圖模型稱爲「SubViewModel」

從SubViewModel中訪問MainViewModel屬性的最佳方法是什麼?反之亦然?

回答

0

你不能讓其他ViewModel可以獲得ViewModels屬性/方法。

這樣做的好處是使用SubViewModel可以發送或發送消息和ViewModel可以處理消息的消息。

如果視圖模型可以處理的SubViewModels消息,是說SubViewModel可以得到的ViewModels方法,它可以發送一個消息調用視圖模型做方法和視圖模型可以得到SubViewModels屬性的SubViewModel可以把它的屬性視圖模型。

如果SubViewModels可以處理ViewModel消息,就像ViewModel可以處理SubViewModels消息一樣,SubViewModels可以獲得ViewModels屬性。

我認爲你正在尋找一個框架,我寫了一個:https://github.com/lindexi/UWP/blob/master/uwp/src/Framework

有喜歡MVVMLight和this一些框架, JP.Utils.UWP

見:https://github.com/reactiveui/ReactiveUI

https://github.com/PrismLibrary/Prism

https://github.com/FantasticFiasco/mvvm-dialogs

0

您可以使用一個靜態屬性來保存MainPageViewModel

public static MainPageViewModel Current { get; private set; } 

public MainPageViewModel() 
{ 
    Current = this; 
} 

的當前實例,並用它來訪問其成員。

MainPageViewModel.Current.MyProperty 
+0

這是一種很好的做法,還是隻是一種方便?不過,你的方法是我真正想到的。 –

+0

此方法用於UWP示例中的內容頁面,以便從MainPage訪問成員,如[XamlPivot](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/XamlPivot/cs /Scenario1.xaml.cs)示例和[ApplicationResources](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/ApplicationResources/cs/scenario1.xaml.cs)。當我需要訪問來自較低級別成員的視圖或視圖模型時,我總是使用它,但我不知道它是否是最好的方法。很高興看到有人有更好的解決方案。 –

相關問題