6

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

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

我发现的唯一似乎涵盖这一点的示例是http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/但是代码似乎不起作用在新的当前 v3 mvx 上,在运行时失败并解析视图模型类型时出错,可能是因为 mvx 中的反射由于子类型或泛型而无法识别/注册类型。

4

1 回答 1

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..
   }
}
于 2013-06-26T12:46:43.863 回答