Представление никогда не становится видимым при реализации Caliburn + MEF в существующем приложении WPF - PullRequest
0 голосов
/ 03 февраля 2011

У меня есть существующий проект WPF, и я хочу переместить его для калибровки с помощью MEF.

Моя оболочка - это модель представления с именем MainViewModel, которая открывает диалог с использованием DefaultWindowManager. Это окно входа в систему. Все это работает.хорошо, но после входа в систему программа немного останавливается, а затем выходит.и MainView никогда не становится видимым.С помощью отладки я проверил и подтвердил, что MainView действительно создается, он просто никогда не становится активным или видимым.

Я пытался унаследовать свою MainViewModel от Screen, IShell и NotifyPropertyBase, IShell и IShell.Есть ли у кого-нибудь какие-либо идеи или подсказки для меня, чтобы попытаться поблагодарить.

Я не использую caliburn в MainView и ViewModel, кроме как для просмотра связей между моделями, так как я только что использовал старые модели вида / представления, это могло иметьделать с чем-нибудь?Есть ли способ повернуть ViewModelBinder для определенных viewmodels / views?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2011

На самом деле Роб Айзенберг, работавший с caliburn, был очень полезным, и он помог мне решить эту проблему.

Проблема заключалась в том, что когда я переключился на калибровку, LoginView было первым окном, которое открывалось и закрывалось доОкно MainView было открыто.

windows рассматривает первое открытое окно как главное окно.и когда главное окно закрыто, окна проверяют, открыты ли другие окна, если нет, закрывает приложение.

Он предоставил возможное решение сделать loginviewmodel оболочкой и закрыть ее после открытия mainviewmodel.

0 голосов
/ 10 февраля 2011

Я упомяну об этом в случае, если ваша проблема такая же, как и у меня, так как она несколько замедлила меня в последнее время ... Если ваша оболочка имеет некоторые импорты, которые не удовлетворяются, то оболочка не появится, и эффект довольно запутанный. Убедитесь, что у вас есть [Import (AllowDefault = True)] в качестве вашего атрибута или используйте [ImportMany]

Однако, так как вы говорите, что при отладке есть экземпляр, проблема может заключаться в том, как вы используете Caliburn (Micro?). В этом случае я предлагаю вам скопировать пример Caliburn, а затем добавить свою функциональность - хотя бы тогда вы узнаете, что это когда-то сработало.

Rgds John

...