Шаблон ControlTemplate позволяет вам изменить внешний вид существующих элементов управления, например, сделать обычную повседневную кнопку похожей на блестящие стеклянные кнопки панели задач Vista или сделать элемент управления вкладкой похожим на новую ленту Office 2007.
Идея состоит в том, что элемент управления содержит только поведение, а шаблон ControlTemplate содержит внешний вид - поэтому кнопка - это «то, что вы нажимаете», а не «прямоугольник с каким-то трехмерным эффектом, на который вы можете нажать».
Вы можете заменить шаблон элемента управления ListBox, чтобы получить что-то вроде списка со скругленными углами или пользовательских полос прокрутки.
DataTemplate (ItemTemplate - это свойство типа DataTemplate), с другой стороны, позволяет вам контролировать, как строки данных, отображаемые в списках (и других подобных элементах управления), в шаблонах данных используются для указания таких вещей, как «Показать фамилию, чем запятая и имя - и фамилия должна быть жирным шрифтом, а имя должно быть зеленым, если оно начинается с буквы A ".
И для полноты картины есть также класс ItemsPanelTemplate, который используется для изменения внутренней компоновки списка - в книге Чарльза Петцольда WPF приведен пример его использования, чтобы обычный список отображал элементы по кругу.