MVVM Light требует ссылки на System.Windows в моей ViewModel? - PullRequest
0 голосов
/ 28 июня 2010

Моя цель состояла в том, чтобы позволить ViewModel сказать View для представления MessageBox и задать пользователю вопрос.

Я не хотел, чтобы ViewModel имел какую-либо ссылку на специфичный для Windows код.

Я беру время, чтобы загрузить и установить MVVM Light Toolkit.Теперь я обнаружил, что даже с помощью этого инструментария моему ViewModel необходимо ссылаться на System.Windows, чтобы разрешать такие вещи, как MessageBoxButton и MessageBoxResult.с ViewModel, которая имеет ссылку на System.Windows?Я мог бы также вызвать MessageBox.Show () прямо из ViewModel.По сути, я ничего не сохранил с помощью инструментария MVVM, поэтому я просто не понимаю, почему я бы использовал это.

Может кто-нибудь объяснить мне, зачем делать это, если мне все еще нужно ссылаться на систему.Windows в моей ViewModel?

Спасибо, Хью

Ответы [ 3 ]

0 голосов
/ 02 марта 2011

Это не побеждает цель инструментария.Инструментарий предоставляет легкую основу для отделения вашего вида от вашей модели, что, безусловно, полезно при модульном тестировании.

Они повторно использовали перечисления, поэтому им не пришлось их переписывать.Определенно, кажется немного странным повторно использовать перечисления, специфичные для пользовательского интерфейса, но, по крайней мере, они не являются обработчиками событий и аргументами событий.

Наконец, MVVM использует команды, что требует реализации ICommand интерфейс.Этот интерфейс находится в PresentationCore и еще более специфичен для пользовательского интерфейса:)

В целом, цель состоит не в том, чтобы удалять ссылки, а в том, чтобы не использовать эти ссылки как можно лучше, и перечисления определенно не нарушают шаблон.

0 голосов
/ 10 августа 2011

Инструментарий mvvm light поможет вам реализовать шаблон mvvm. У легкого инструментария mvvm также есть очень приятное преимущество: его можно смешивать (некоторые настройки сделаны для вас, так что вы можете использовать Expression Blend для очень простого проектирования). Шаблон Mvvm также действительно помогает (как говорили другие) тестировать ваше приложение, поскольку тестирование представления сложно, но гораздо проще протестировать viewModel.

Если вы хотите знать, почему вы проходите через это усилие и используете mvvm light, я предлагаю вам проверить этот связанный ответ

Надеюсь, это поможет и удачи!

0 голосов
/ 01 июля 2010

Когда вы используете класс MessageBox, вам нужна ссылка на System.Windows.Forms.dll.MVVM-Light не требует этой ссылки.

...