将参数从一个viewmodel传递到另一个viewmodel,修改它然后将其返回到原始viewmodel的推荐方法是什么?
关于将值传递给视图的内容很多,即ShowViewModel(new {paramX = valueY}),但是我无法找到任何有关显示的"子模型"在关闭/解除时将值返回给父级的工作示例在某种方法.
我发现的唯一一个似乎涵盖这个的样本是http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/但是代码似乎不起作用在新的当前v3 mvx上,在运行时因错误解析viewmodel类型而失败,可能是因为mvx中的反射由于子类型或泛型而无法识别/注册类型.
在与我的问题链接的作者讨论后,该代码确实可以通过一个小的调整和对我的 View 类的名称的更正来符合 mvvmcross 约定。
我的视图被错误地命名为 SomethingViewController 而不是 SomethingView。
为了在当前 MVX v3 代码库上工作,对 Greg 代码的更改是将他的示例更改为:
public abstract class SubViewModelBase<TResult> : ViewModelBase
{
protected string MessageId { get; private set; }
protected SubViewModelBase(string messageId)
{
MessageId = messageId;
}
....
}
Run Code Online (Sandbox Code Playgroud)
到:
public abstract class SubViewModelBase<TResult> : ViewModelBase
{
protected string MessageId { get; private set; }
public virtual void Init(string messageId){
this.MessageId = messageId;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,在你的子模型中使用
public abstract class MySomeModel : SubViewModelBase<YourReturnType>
{
public override void Init(string messageId, other.. parameters..){
base.Init(messageId);
.. your other parameters init here..
}
}
Run Code Online (Sandbox Code Playgroud)