2016-07-02 7 views
0

ViewではないクラスからViewModelにアクセスしたいと思います。私は次のことをすればいいですか?これはパターンを破っていますか?MvvmCrossのビューを継承してViewModelにアクセスする

namespace MyApp 
{ 
    public class GameView 
    { 
     protected new GameViewModel ViewModel 
     { 
      get { return (GameViewModel)base.ViewModel; } 
     } 
    } 
} 

// Derived class 
namespace MyApp 
{ 
    public class InAppPurchase: GameView 
    { 
     public void BuyCoins() 
     { 
      ViewModel.PurchasedCoins += ViewModel.CoinsForSale; 
     } 
    } 
} 
+0

MVVMパターンに間違いなく違反しています。 GameViewModelにバインドされているGameViewがあると思います。なぜGameViewクラスから継承したいのですか?正確なシナリオを知らなくても、明確に説明することはできません。 – ViVi

+0

この質問は主に意見に基づいています。私の意見は、ビューのViewModelsへの1:1マップを持たなければならないということです。あなたが現在示しているコードは、それに違反しているので、MvvmCrossのコードでViewModelから行うのではなく、おそらくViewで手動のナビゲーションを行う必要があります。 – Cheesebaron

答えて

0

あなたは(IMessengerとパブリッシュ/サブスクライブ)あなたがメッセージ(MvxMessage)を送信することもできますしたい方の場所からのViewModelにアクセスし、ViewModelに内でそれらを処理する場合。これは、ViewModelまたはViewModelと、Mvvmパターンのサービスのような他のコンポーネントとの間で通信するための適切な方法です。

関連する問題