Последние шаги в использовании MVVM для отделения GUI от бизнес-логики? - PullRequest
0 голосов
/ 14 января 2010

Совсем недавно я узнал об использовании MVVM для отделения GUI от базовой модели. Я закончил тем, что научился как можно больше конвертировать свое текущее приложение в MVVM, и был в основном успешным. Теперь мне нужно выяснить, как на самом деле взять графический интерфейс, сгенерированный в Blend, и использовать его вместо моего текущего графического интерфейса, который был разработан в Visual Studio. Я не могу найти какие-либо ресурсы в Интернете, чтобы сделать это как можно более плавным. Я хотел бы знать, что вы все сделали и имели для вас работу.

Моим окончательным решением было бы то, что позволило бы мне во время выполнения выбрать обложку из меню и немедленно изменить GUI с текущей на другую, которую выбирает пользователь. Может кто-нибудь указать мне на посты, которые объясняют, как это сделать?

Моя текущая цель менее амбициозна - я хотел бы иметь возможность добавить мой новый графический интерфейс Blend в мой проект Visual Studio, а при компиляции должен появиться новый графический интерфейс Blend. Если я хочу вернуться к старому графическому интерфейсу, мне придется перекомпилировать. Пока все в порядке.

Я добавил свой проект Blend в решение VS2008 и настроил его для запуска. Это прекрасно работает - если я запускаю приложение, вместо старого появляется новый графический интерфейс. Проблема в том, что ему нужны библиотеки DLL, которые на самом деле находятся в другой папке - папке bin \ Debug исходного загрузочного приложения. Должен ли я оставить свой исходный графический интерфейс в качестве запускаемого приложения, а затем загрузить его код другого приложения?

Кроме того, каждому из соответствующих графических интерфейсов требуется ссылка на ViewModel. В моем случае я просто создавал его в своем текущем классе GUI. Для Blend GUI я также создал его экземпляр, так как только один из GUI будет активным. Это где нужно использовать что-то вроде инфраструктуры Unity?

Извините за все возможно бессвязные вопросы, но я не совсем уверен, как мне поступить отсюда. Я чувствую, что я настолько близок к тому, чтобы доказать себе, что MVVM - это путь с точки зрения графического интерфейса пользователя (я уже продан с долей тестируемости).

Ответы [ 2 ]

1 голос
/ 14 января 2010

Все примеры, которые я видел, динамически переключают внешний вид графического интерфейса с помощью некоторой формы перестановки ResourceDictionary. Несколько ссылок:

Загрузка словарей ресурсов XAML во время выполнения

WPF меняет тему / стиль во время выполнения

Надеюсь, это поможет.

0 голосов
/ 14 января 2010

Я обнаружил ошибку, когда в одной части своего кода я использовал неправильное свойство, чтобы найти путь к текущей запущенной сборке. Я сейчас использую

System.Reflection.Assembly.GetExecutingAssembly().Location

Хотя это работает, оно работает, только если я копирую exe-файл из папки bin \ Debug проекта Blend в папку bin \ Debug моего основного приложения. Думаю, мне придется с этим смириться, используя событие после сборки. Последние несколько месяцев я был так избалован работой с .NET, где мне не пришлось этого делать (как раньше в C ++), потому что все ссылочные сборки автоматически копировались. Если я хочу отладить какой-либо программный код, я также должен установить начальный исполняемый файл в настройках проекта Blend, что также неудобно, особенно при работе на разных компьютерах, где пути не совпадают. Любые предложения здесь также будут оценены!

...