Удаление кодовых файлов из проектов WPF MVVM - PullRequest
3 голосов
/ 04 августа 2010

Я кодирую приложение WPF, используя шаблон MVVM. Мне не нужно иметь файлы codebehind для моих пользовательских элементов управления. Каков наилучший способ удалить эти файлы элегантно?

Я могу создать класс управления пользователем, затем я могу использовать этот класс для всех моих представлений (для получения дополнительной информации: http://sondreb.com/blog/post/No-Code-Behind-for-MVVM.aspx)

Есть ли альтернативные способы?

Спасибо.

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

Я думаю, что наиболее элегантное решение этой проблемы, вероятно, игнорировать ее.

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

Зачем вы это делаете для себя?

1 голос
/ 11 августа 2010

Я не думаю, что вы можете избежать использования рефлексии для вызова InitializeComponent (чтобы ответить на ваш вопрос об альтернативных способах). Избегание выделенного кода имеет свои преимущества и недостатки, одно из преимуществ, которое я вижу, заключается в том, что двойной щелчок на любом элементе управления больше не работает ни в Blend, ни в Visual Studio. Это «заставляет» меня никогда не делать «быстрых решений» для определенных действий.

С другой стороны, выполнение «быстрых исправлений» для проверки чего-либо становится более сложным, так что это выбор, который вы должны принять.

Нет ничего плохого в том, что код-сзади лежит в одном, в одном из моих текущих больших проектов у меня нет кода-в-конце в течение ок. 20% файлов XALM, в остальном я просто не удалил их (пока).

Вы можете реализовать перетаскивание, не полагаясь на логику кода позади , я сделал это с моим проектом Silverlight 4, который требовал обработки некоторых действий при запуске вне браузера без границы окна.

В зависимости от вашей MVVM-реализации и инфраструктуры вы можете получить доступ к представлению из вашей модели представления. Хотя по возможности этого следует избегать, иногда это просто нереальное решение. Например, Caliburn.Micro предоставляет чистый способ доступа к представлению, реализуя интерфейс IViewAware и вызывая метод GetView.

...