将值返回到MvvmCross中的“父”viewmodel

时间:2013-06-26 12:05:23

标签: mvvmcross

将参数从一个viewmodel传递到另一个viewmodel,修改它然后将其返回到原始viewmodel的推荐方法是什么?

关于将值传递给视图,包括ShowViewModel(new {paramX = valueY})已经写了很多,但是我找不到任何有关显示的“子模型”将值返回给父级的工作示例以某种方式关闭/解雇。

我发现的唯一一个似乎涵盖这个的样本是http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/但是代码似乎不适用于新的当前v3 mvx,在运行时失败并且错误解析了viewmodel类型,可能是因为反射由于子类型或泛型,mvx无法识别/注册类型。

1 个答案:

答案 0 :(得分:3)

在与我的问题中的链接的作者讨论后,代码确实可以使用一个小调整和修改我的View类的名称以符合mvvmcross约定。

我的视图错误地命名为SomethingViewController而不是SomethingView。

改变Greg代码以处理当前的MVX v3代码库是为了改变他的样本:

public abstract class SubViewModelBase<TResult> : ViewModelBase 
{
   protected string MessageId { get; private set; }

   protected SubViewModelBase(string messageId)
   {
      MessageId = messageId;
   }
   ....
}

为:

public abstract class SubViewModelBase<TResult> : ViewModelBase 
{
   protected string MessageId { get; private set; }

   public virtual void Init(string messageId){
      this.MessageId = messageId;
   }
}

当然在您的子模型中使用

public abstract class MySomeModel : SubViewModelBase<YourReturnType> 
{
   public override void Init(string messageId, other.. parameters..){
      base.Init(messageId);
      .. your other parameters init here..
   }
}