Шаблон против ControlTemplate против DataTemplate

#wpf #wpf-controls

#wpf #wpf-элементы управления

Вопрос:

У нас есть шаблоны, управляющие шаблоны и шаблоны данных для элементов управления WPF. Я не знаю, существуют ли еще какие-либо типы (пожалуйста, дайте мне знать, если таковые имеются). Но когда что использовать?

Ответ №1:

Посмотрите на FrameworkTemplate производные типы:

  • ControlTemplate — Определяет визуальную структуру и поведенческие аспекты Control , которые могут быть общими для нескольких экземпляров элемента управления.;
  • DataTemplate — Описывает визуальную структуру объекта данных;
  • ItemsPanelTemplate — Указывает панель, ItemsPresenter создаваемую для компоновки элементов ItemsControl .

PS: Как вы можете видеть, нет просто «Шаблона» 🙂

Комментарии:

1. Template Типа нет, но ControlTemplate присваивается Template свойству (например Button.Template ), унаследованному от Control .

Ответ №2:

HierarchicalDataTemplate

 <UserControl.Resources>
    <HierarchicalDataTemplate DataType="{x:Type src:League}" ItemsSource="{Binding Path=Divisions}">
        <TextBlock Text="{Binding Path=Name}"/>
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="{x:Type src:Division}" ItemsSource = "{Binding Path=Teams}">
        <TextBlock Text="{Binding Path=Name}"/>
    </HierarchicalDataTemplate>

    <DataTemplate DataType="{x:Type src:Team}">
        <TextBlock Text="{Binding Path=Name}"/>
    </DataTemplate>
</UserControl.Resources>
  

Ответ №3:

Что касается того, когда что использовать — обычно вы можете определить по тому, что вы переопределяете. Он будет иметь либо тип ControlTemplate, либо DataTemplate.