У вас есть два вопроса:)
XAML
(DataTriggers
) или в коде TemplateSelector
Style
или просто DataTemplate
. В первом примере вы переопределяете Style
, во втором - DataTemplate
. Вот мой 2c:
Я бы придерживался триггеров , так как вы получите непревзойденный уровень гибкости с ними - новый редактор по цене нового ресурса и триггер всего в XAML - что может быть лучше? Существует один потенциальный оговорка, связанная с использованием DataTrigger - это может привести к утечкам данных.
Говоря о выборе Style
vs DataTemplate
, я снова использую Style
. Это может быть немного более тяжелое визуальное дерево, но это даст вам окончательный контроль над вашими редакторами.
В частности, некоторые свойства могут быть определены только на уровне Style
, используя Style
Setters
. Определение уровня @ DataTemplate
просто не будет работать, так как ваш контент DataTemplate
не является непосредственным дочерним элементом вашего контейнера управления (есть дополнительный уровень - элемент управления actula). Если у вас нет таких свойств, ControlTemplates
тоже хороши и, вероятно, быстрее (?).