2017-04-18 10 views
0

私のMainViewには、アプリケーションの存続期間中存在するMainViewModelがあります。(UWP)diff内からviewmodelのプロパティ/メソッドにアクセスする方法。 viewmodel?

My MainViewには、内部にフレームが埋め込まれています。

そのフレームからナビゲートされる各ページには、独自のViewModelがあります(このアプローチは良いパターンです)。これらのViewModelsを "SubViewModel"と呼びます。

SubViewModelからMainViewModelのプロパティにアクセスするには、どのような方法が最適ですか、その逆もあります。

答えて

0

他のViewModelにViewModelsプロパティ/メソッドを取得させることはできません。

SubViewModelがメッセージを送信または送信でき、ViewModelがメッセージを処理できるというメッセージを使用することをお勧めします。

ViewModelがSubViewModelメッセージを処理できる場合、SubViewModelはViewModelsメソッドを取得できるViewModelメソッドを呼び出すことができます。ViewModelはメソッドを呼び出すことができ、ViewModelはSubViewModelプロパティを取得できます。 ViewModel。

ViewModelがSubViewModelsメッセージを処理できるように、SubViewModelsがViewModelsメッセージを処理できる場合、SubViewModelsはViewModelsプロパティを取得できます。

は、私はあなたがフレームワークを探していると思うし、私は1つを書いた: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

このアプローチは、[XamlPivot](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/XamlPivot/cs)のように、コンテンツページがMainPageのメンバーにアクセスするためのUWPサンプルで使用されます。 /Scenario1.xaml.cs)サンプルと[ApplicationResources](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/ApplicationResources/cs/scenario1.xaml.cs)を参照してください。下位レベルのメンバーからビューまたはビューモデルへのアクセスが必要なときはいつも使っていますが、それが最善のアプローチかどうかはわかりません。誰かがより良い解決策を持っているかどうかを見てうれしいです。 –

関連する問題