Я сказал бы, лучше использовать класс каждый раз, когда Вы думаете, что элемент стиля будет повторным на странице. Объекты как HeaderImage, FooterBar и т.п. подходят как идентификатор, так как Вы будете только использовать его однажды, и он поможет предотвратить Вас от случайного дублирования его, так как некоторые редакторы предупредят Вас, когда у Вас будут дублирующиеся идентификаторы.
я могу также видеть его полезный, если Вы собираетесь генерировать элементы отделения динамично и хотеть предназначаться для определенного объекта для форматирования; можно просто дать ему надлежащий идентификатор в поколении в противоположность поиску элемента и затем обновлению его класса.
Я использую MVVM, но не религиозно.
Я имею в виду, используйте модель для ваших представлений, но также используйте некоторый код, когда это необходимо (перетащите и отпустите, дважды щелкните). Найдите баланс, который поможет вашему развитию, не сводя с ума.
MVVM очень хорошо поддается WPF. Можете ли вы выполнить перетаскивание с помощью WPF и MVVM? Что вы можете. Попробуйте выполнить поиск по запросу "WPF Drag Drop Behavior"
Есть две действительно веские причины использовать MVVM:
Как отмечалось в нескольких плакатах, любые события, связанные с UX, можно обрабатывать в коде программной части, но вы должны открывать и получать доступ (чтение и запись) к данным через модели представления для упрощения привязки в ваших представлениях.
Что касается дополнительных усилий, о которых я упоминал в №2, вы можете легко добавить статическое свойство к своему объекту App, чтобы определить, работает ли приложение или View, открываемый в Blend. Если представление открыто в Blend, используйте фиктивные данные вместо вызовов доступа к данным. Вот пример кода, который работает для проверки того, есть ли в Blend открытое представление:
if (Application.Current == null || Application.Current.GetType() == typeof(Application))
{
isInDesignMode = true;
}
else
{
isInDesignMode = false;
}
Надеюсь, это поможет.
Если вы ищете возможности для обслуживания и тестирования приложений в долгосрочной перспективе, убедитесь, что вы можете сделать это с помощью MVVM и WPF. или просто используйте WPF. Кривая начального обучения MMVM очень крутая.