2013-06-26 13 views
6

あるビューモデルから別のビューモデルにパラメータを渡し、それを修正して元のビューモデルに戻すには、どのような方法をお勧めしますか?MvvmCrossの 'parent' viewmodelに値を返す

ShowViewModel(new {paramX = valueY})に値を渡すことについて書かれていましたが、表示された 'submodel'が値を親に返すという実例を見つけることができませんいくつかの方法で閉じたり閉じたりします。

これをカバーしている唯一のサンプルはhttp://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/ですが、コードは新しい現在のv3 mvxでは動作していないようですが、実行時にviewmodelの型を解決するエラーで失敗します。おそらくmvxでの反映がwasnサブタイプまたはジェネリックのためにタイプを識別/登録できません。

答えて

3

私の質問からのリンクの著者と議論した後、コードはmvvmcrossの規則に従うために、1つのマイナーな調整と、私のViewクラスの名前の修正で動作します。

私の表示は、SomethingViewではなくSomethingViewControllerという名前が間違っています。

現在MVX v3のコードベースで動作するようにグレッグのコードへの変更がから彼のサンプルを変更することです:

を使用し、あなたのサブモデルに

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

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

そしてもちろん:に

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

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

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

これは、親ビューモデルに子への参照があると仮定していませんか?もしそうでなければ、Initメソッドを使ってmessageIdをどのように渡しますか? –

+0

気にしないでください。この関連記事が見つかりました:http://slodge.blogspot.co.uk/2013/03/v3-new-viewmodel-lifecycle.html –

関連する問題