#c# #mvvm #windows-runtime #mvvmcross
#c# #mvvm #windows-среда выполнения #mvvmcross
Вопрос:
У меня есть перекрестное приложение MVVM, и я пытаюсь выяснить, почему не отображается начальный экран (это на WinRT).
Следующий код выглядит так, как будто он загружает ViewModel MainViewModel
:
var setup = new Setup(rootFrame);
setup.Initialize();
var start = Cirrious.CrossCore.Mvx.Resolve<Cirrious.MvvmCross.ViewModels.IMvxAppStart>();
start.Start();
Однако Start
метод MainViewModel
никогда не вызывается. Причина, по-видимому, заключается в этой ошибке в выводе:
Error seen during navigation request to MainViewModel - error KeyNotFoundException: Could not find view for MyApp.PCL.ViewModels.MainViewModel
Итак, вот мое предположение относительно проблемы: он ищет MyApp.PCL.ViewModels.MainView
, очевидно, этого не существует. Представление находится в: MyApp.Views.MainView
. Верно ли мое предположение, и если да, то как я могу убедить MvvmCross искать в правильном месте?
Редактировать:
Setup
Метод вызывается из приложения MyApp.Windows
WinRT.
protected override IMvxApplication CreateApp()
{
return new MyApp.PCL.App();
}
MyApp.PCL — это переносимая библиотека классов, на которую ссылаются MyApp.Windows
.
MyApp.PCL
содержит ViewModels и MyApp.Windows
содержит представления.
Я попытался переопределить Start()
:
public class MainViewModel
: MvxViewModel
{
public override void Start()
{
System.Diagnostics.Debugger.Break();
base.Start();
}
но это никогда не попадает.
Комментарии:
1. Разве ваше представление не должно быть в MyApp.WinRT.Views?
2. Это все равно будет другое пространство имен?
3. По умолчанию Mvx WindowsStore ищет представления во всей сборке, в которой выполняется установка. Из вашего вопроса я понятия не имею, что происходит — не вижу, какова структура вашего проекта / решения. Вы могли бы отредактировать свой вопрос, чтобы предоставить более подробную информацию? Или, я думаю, вы могли бы переопределить github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious /… для отладки и ознакомления с тем, что происходит в вашем случае. В github.com/MvvmCross/MvvmCross/wiki /…
4. Спасибо, что так быстро ответил, Стюарт. Я обновил свой пост. Одна вещь, о которой я не упомянул (я не считаю, что это актуально), заключается в том, что приложение является универсальным приложением; однако я удалил проект Windows Phone.
Ответ №1:
Огромная проблема! здесь, но я опубликую решение; в моем представлении использовался не MvxStoreView, а стандартный StoreView.
Решение состояло в том, чтобы изменить представление следующим образом:
...
xmlns:views="using:Cirrious.MvvmCross.WindowsStore.Views"
...
<views:MvxStorePage