Я работаю над mvvm в C# wpf, я немного разбираюсь в mvvm. Я создаю объект своего класса View в My ViewMode classl.so это нарушение шаблона mvvm? и как ? было бы замечательно, если кто-то объяснит это подробно.Создание объекта класса вида в классе ViewModel в mvvm
ответ
Вся точка шаблона MVVM заключается в том, чтобы поддерживать разделение представления (дисплея, представляющего элементы управления для пользователя) из Модели (данные, бизнес-логика , доступ к данным) и ViewModel (клей между моделью и представлением). VM не должно беспокоиться о проблемах с пользовательским интерфейсом (например, View), поэтому создание и использование представления в режиме просмотра нарушает шаблон MVVM.
A View почти всегда состоит из элементов пользовательского интерфейса, таких как кнопки или текстовые блоки. Viewmodel должен быть связан с такими вещами, как свойства, например UserName
, или StartDate
, или WarningState
. Эти свойства VM затем привязаны (с DataBinding
) к свойствам элементов пользовательского интерфейса в представлении ... так что представление имеет зависимость от VM , но не наоборот. Когда виртуальная машина получает данные для заполнения этих свойств, в первую очередь, это модель или для ввода данных, возможно, все они будут пустыми, и приложение будет полагаться на пользователя, вводящего данные в представление.
Возможно, вы захотите связать WarningState с TextBox, например, но в равной степени вы можете связать его с ComboBox. Или вы можете использовать конвертер и привязать его к цвету переднего плана прямоугольника или фоновому цвету элемента пользовательского интерфейса, который используется для чего-то совершенно другого.
Дело в том, что этим вещам не нужно беспокоиться о ВМ: все, о чем он заботится, представляет данные/состояние. Это зависит от того, как он занимается этой информацией (или не имеет с этим отношения). Таким образом, вы можете полностью заменить вид другой версией и не должны изменять что-нибудь в вашей виртуальной машине ... вы успешно отделили свой экран от своей логики.
Точка MVVM является тестируемостью ... поэтому вы хотите отделить свое представление от модели представления. Как только это будет сделано, вы можете выполнить модульное тестирование модели своего вида, не испытывая этого. Трудно получить объяснение MVVM серьезно, когда не упоминается модульное тестирование. – BenjaminPaul
Это определенно ** одна ** точка MVVM да. Я попытался создать простое объяснение, потому что, как отметили клемы, есть множество онлайн-ресурсов, чтобы направить обучение OP. Мой ответ не был полным, но я не думаю, что это означает, что мои очки «трудно воспринимать всерьез». Если вы можете поменять один вид и полностью заменить его совершенно другим видом, и вам не нужно ничего менять о вашей модели или виртуальной машине, тогда вы можете быть очень счастливы, что успешно отделили свои проблемы. Попробуйте сделать это в Winforms (без использования MMVM). – Mashton
- 1. Создание viewmodel в MVVM
- 2. MVVM Создание ViewModel
- 3. wpf mvvm .. элементы вида доступа в viewmodel
- 4. Создание объекта класса chlid в родительском классе
- 5. Создание объекта класса в другом классе
- 6. Создание объекта абстрактного класса в классе наследования
- 7. MVVM ViewModel создание и привязка
- 8. MVVM - создание новых объектов в viewmodel
- 9. WPF (MVVM): Закрытие вида из Viewmodel?
- 10. MVVM ViewModel внутри ViewModel
- 11. MVVM ViewModel и тип объекта (PresentationCore.dll)
- 12. Создание объекта в системном классе
- 13. Как связать переменные вида для ViewModel в WPF MVVM?
- 14. Создание класса в MVVM вопросы
- 15. Создать объект вида в ViewModel
- 16. MVVM Throbber в ViewModel
- 17. Свойства MVVM в ViewModel?
- 18. mvvm light: вызов метода в viewmodel из вида
- 19. MVVM ViewModel Свойства каскадирования
- 20. Создание объекта класса в другом классе в C++
- 21. Есть два вида ViewModels в MVVM Light?
- 22. MVVM - динамическое создание нескольких экземпляров view/viewmodel
- 23. Изменение вида Wpf MVVM
- 24. MVVM: как создать ViewModel от объекта Model
- 25. Обновление вида в ViewModel
- 26. MVVM ViewModel Передача параметров в другой ViewModel
- 27. MVVM, создание объекта Injection & Runtime
- 28. Уведомить Parent ViewModel в MVVM
- 29. Динамическое создание ViewModel для всплывающих подсказок в WPF MVVM
- 30. Изменение вида в MVVM
«так ли это нарушает шаблон mvvm?» Да. Модель представления не должна знать вид. – Clemens
thanx для комментария, но вы можете объяснить, почему? Я новичок в mvvm –
Как насчет поиска в Интернете? Есть много онлайн-ресурсов. – Clemens