将参数从一个viewmodel传递到另一个viewmodel,修改它然后将其返回到原始viewmodel的推荐方法是什么?
关于将值传递给视图,包括ShowViewModel(new {paramX = valueY})已经写了很多,但是我找不到任何有关显示的“子模型”将值返回给父级的工作示例以某种方式关闭/解雇。
我发现的唯一一个似乎涵盖这个的样本是http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/但是代码似乎不适用于新的当前v3 mvx,在运行时失败并且错误解析了viewmodel类型,可能是因为反射由于子类型或泛型,mvx无法识别/注册类型。
答案 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..
}
}