通过继承MvvmCross中的View来访问ViewModel

时间:2016-07-02 05:28:46

标签: c# inheritance mvvm viewmodel mvvmcross

我想从不是View的类访问我的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;
         }
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想从您想要的任何地方访问ViewModel,您可能希望发送消息(MvxMessage)并在ViewModel中处理它们(使用IMessenger发布/订阅)。这是在ViewModel或ViewModels与Mvvm模式中的服务之类的其他组件之间进行通信的正确方法。