Это связано с another question I posted, но, вероятно, гарантирует его.MvvmCross - Не удалось решить тип для ViewModel
Мне нужно иметь возможность выполнить команду в моей модели ViewModel из связанного с ней вида Android и, в частности, при нажатии элемента меню «Панель действий». Поэтому, прежде всего, мне нужен доступ к экземпляру ViewModel.
Сначала я попробовал следующую строку кода в OnCreateOptionsMenu(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
вылечить ошибку, но в результате другие вопросы, как это явно не дал мне тот же экземпляр ViewModel, что рамки MvvmCross должны быть уже инициализируется в фоновом режиме (?):
public override void Initialize() {
CreatableTypes()
.EndingWith("NewJobViewModel")
.AsTypes()
.RegisterAsSingleton();
}
Я четко понимаю неправильную архитектуру и то, что происходит в фоновом режиме (поэтому я извиняюсь, если это основной вопрос), но может ли кто-нибудь рассказать мне, что я делаю неправильно?
Спасибо за это Стюарт, он решил мою проблему, и теперь мне удалось подключить событие click панели действий к команде в моей модели ViewModel. PS: Я нашел ваш сериал N + 1 фантастическим способом узнать MvvmCross. Продолжайте отличную работу :-) Грэм. – Graham
Но как насчет сценариев, таких как представление вкладки, с HomeViewModel, который имеет некоторые модели просмотра для детей, по одному для каждой вкладки. Вы новичок в каждой модели детского просмотра и передаете все зависимости в HomeViewModel? Почему бы не использовать Mvx.Resolve в конструкторе HomeViewModel? –