Меня зовут Хесус из Испании, я разработчик .NET, и я только что открыл эту прекрасную сеть несколько дней назад.У меня есть некоторые вопросы о шаблоне MVVM
У меня есть некоторые вопросы о шаблоне MVVM, и я буду рад, если вы сможете ответить на них.
Я начал использовать WPF три месяца назад, и я узнал шаблон MVP.
MVP настолько хорош, что вы можете структурировать приложение так хорошо.
Я начал видеть MVVM всюду, но каждый использует шаблон своим методом.
Каждый блоггер говорит о MVVM в своих блогах WPF, но каждая реализация отличается.
Я сосредоточен теперь на реализации, которые используют набор инструментов MVVM для CodePlex, но у меня есть вопросы, и я не могу найти слишком много информации.
Я думаю, что MVVM - это вариация MVP.
С MVP в каждом представлении есть презентатор, который выполняет работу вида.
В MVVM это то же самое, но с использованием команд, когда только можно.
Я также видел, что если вам нужно событие, это похоже на MVP; делегирование события ведущему/View-Model, то есть если это не задание для представления (например, обновление пользовательского интерфейса).
С другой стороны, View-Model не имеет ссылки на View, поэтому мне приходится играть сложнее с привязкой данных.
Вы должны использовать DelegateCommands (это то же самое, что и RelayCommands, верно?).
Uhm ... еще вопросы ... Можно ли использовать одну и ту же модель View с двумя видами/пользовательскими элементами управления?
Ох ... Вчера я столкнулся с проблемой, когда играл в MVVM.
Я создал CommandReference
моей команды для привязки ключа, и я присвоил эту ссылку свойству команды моей кнопки, ну, CanExecuted
работал в первый раз, но он не обновлял свойство IsEnabled
, когда значение CanExecuted
было истинным , Я исправил его, привязывая команду непосредственно к кнопке и не используя ссылку. Возникает вопрос: почему какой-то код связывает ссылку с объектами и почему другой код привязывает команду напрямую?
Что мне нужно знать о MVVM? (Вчера я видел что-то, называемое прикрепленным поведением, но я не знаю, что это такое).
Я переписываю приложение для заметок, которое я разработал с использованием MVP, но теперь с MVVM. Я заменил события командами (используя DelegateCommand), устранит ссылки на представления в Model View, и я думаю, что все потому, что примеры, которые я видел MVVM, очень похожи на MVP.
Хорошо, я буду признателен, если вы укажете мне все недоразумения, которые у меня есть с этим шаблоном.
Спасибо, и в будущем я буду помогать следующей MVVM послушников :)
Отличный отклик. Единственный акцент, который я хотел бы добавить, - не недооценивать важность (и вездесущность) привязки данных в WPF. Легкость декларативно привязки к VM/PM - это то, что заставляет шаблон * просто работать *. – micahtan
Спасибо, Майкл. Мне нечего сказать. Вы отвечаете очень хорошо для неспецифических вопросов :) Я проверю эти ссылки для лучшего понимания. С другой стороны, мне нужно больше мнений с ViewModel, связанным с 2 или более видами. Еще раз спасибо. –
Хесус, вещь около 1 ViewModel per View - чисто мое мнение. Он считает, что это мудро, основываясь на моем опыте. Если у вас есть смысл повторить их использование, тогда вы должны (всегда делайте то, что работает для вас). К сожалению, на мой взгляд, для шаблонов пользовательского интерфейса не так много хорошего чтения. Опыт - это действительно хороший способ узнать тонкости дизайна пользовательского интерфейса. Хотелось бы, чтобы у меня была хорошая книга, чтобы указать вам, но я все еще не нашел ее. Сожалею. –