2

これは私が投稿した別の質問に関連していますが、おそらくそれ自体が正当化されます。

関連する Android ビューから、特にアクション バーのメニュー項目がクリックされたときに、ViewModel でコマンドを実行できるようにする必要があります。したがって、まず、ViewModel のインスタンスにアクセスする必要があります。

まず、 ViewOnCreateOptionsMenu(IMenu menu)のメソッドで次のコード行を試しました 。

NewJobViewModel newJobViewModel = Mvx.Resolve<NewJobViewModel>();

ただし、これによりエラーが発生しました:"UNHANDLED EXCEPTION: Cirrious.CrossCore.Exceptions.MvxException: Failed to resolve type MyProject.Core.ViewModels.NewJobViewModel"

次に、代わりにこれを試しました:

[Activity]
public class NewJobView : MvxActivity {
    private NewJobViewModel _newJobViewModel;

    public NewJobViewModel NewJobViewModel {
        get { return _newJobViewModel; }
        set { _newJobViewModel = value; }
    }

    protected override void OnCreate(Bundle bundle) {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.NewJobView);
        this.NewJobViewModel = Mvx.Resolve<NewJobViewModel>();
    }
}

...役に立ちませんでした。

ただし、次を追加しApps.csてエラーを修正しましたが、MvvmCross フレームワークがバックグラウンドで既に初期化されている必要がある ViewModel の同じインスタンスが明らかに提供されなかったため、他の問題が発生しました(?):

public override void Initialize() {
    CreatableTypes()
        .EndingWith("NewJobViewModel")
        .AsTypes()
        .RegisterAsSingleton();
}

一部のアーキテクチャとバックグラウンドで何が起こっているかを明らかに誤解しています (したがって、これが基本的な質問である場合はお詫びします)。

4

1 に答える 1