мы можем наследовать наши пользовательские элементы управления не-XAML друг от друга
Я не понимаю. Как насчет MVVM исключает наследование?
мы используем столько кода, сколько хотим, что ускоряет разработку
Кодовый код хорош, если он связан с представлением. то есть. не бизнес-логика, которую вы хотите проверить. Разделение интересов и все.
Вы все еще можете делать MVVM, делая все в коде - даже ваше мнение. MVVM не о нулевом коде позади. Речь идет о разделении интересов и выгод, которые вы извлекаете из этого. Если вам не нужно проектировать свои представления в Blend, то вы можете использовать многие или все представления в виде кода. Черт возьми, даже если вам делать нужно работать в Blend, у вас есть определенная часть вашего представления, которая все еще может быть выражена в виде кода. Вам просто нужно оценить компромиссы и принять осознанные и обоснованные решения.
Прикрепление инфракрасных элементов управления непосредственно к нашему модельному классу, исходящему из веб-службы, устранило десятки небольших проблем связывания, которые у нас были с привязкой инфраструктуры к ObservableCollections
Средства управления инфраструктурой крайне плохие. Там я это сказал. Если это вариант, не используйте их. Если это не вариант (и я тоже занимал эту должность), вы можете обойти многие проблемы с помощью поведения и других методов. Да, это хлопотно, но не вините MVVM - вините Infragistics за создание набора элементов управления, который так расходится с платформой WPF.
даже в прямом WPF отсутствие ObservableCollections делает проблемы, такие как невозможность создания простого меню, исчезает
Я вообще не понимаю этого вопроса. ObservableCollections являются частью WPF, а не MVVM. И после прочтения вашего вопроса (опять же, я ответил на него вскоре после того, как вы его отправили), я бы сказал, что это просто ваше недопонимание того, как работает WPF - вообще никакого отношения к MVVM.
мы заменяем EventAggregator поочередно на прямые события, используя UserControls и код позади, что устраняет все виды проблем с событиями
Правильный инструмент для правильной работы. Если вы можете использовать прямые события, то вы можете сделать это независимо от того, используете вы MVVM или нет. MVVM ни в коем случае не требует использования шаблона агрегатора событий, поэтому опять ваша точка зрения неясна. Шаблон агрегатора событий можно использовать для обеспечения совместной работы различных компонентов во время выполнения без каких-либо зависимостей во время компиляции. Используя стандартные события CLR, вы создаете сильные зависимости между вашими компонентами. Если вы когда-нибудь захотите использовать их в изоляции, у вас будет чертовски много времени.
Таким образом, это не столько дело против MVVM, сколько недостаток понимания. Я думаю, что вы плывете вверх по течению, и я бы посоветовал вам поближе взглянуть на MVVM. Это не «серебряная пуля» или шаблон «один размер подходит всем», но он может помочь создать фантастическую основу для ваших приложений WPF / SL при правильном использовании.