ItemsControl.ItemTemplate Właściwość

Definicja

Pobiera lub ustawia używane do wyświetlania DataTemplate każdego elementu.

public:
 property System::Windows::DataTemplate ^ ItemTemplate { System::Windows::DataTemplate ^ get(); void set(System::Windows::DataTemplate ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.DataTemplate ItemTemplate { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplate : System.Windows.DataTemplate with get, set
Public Property ItemTemplate As DataTemplate

Wartość właściwości

Element DataTemplate określający wizualizację obiektów danych. Wartość domyślna to null.

Atrybuty

Przykłady

W poniższym przykładzie pokazano, jak utworzyć DataTemplate wbudowany kod. Określa DataTemplate , że każdy element danych jest wyświetlany jako trzy TextBlock elementy w obiekcie StackPanel. W tym przykładzie obiekt danych jest klasą o nazwie Task. Należy pamiętać, że każdy TextBlock element w tym szablonie jest powiązany z właściwością Task klasy.

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

Częściej należy zdefiniować obiekt DataTemplate w sekcji zasobów, aby mógł być obiektem wielokrotnego użytku, jak w poniższym przykładzie:

<Window.Resources>
<DataTemplate x:Key="myTaskTemplate">
  <StackPanel>
    <TextBlock Text="{Binding Path=TaskName}" />
    <TextBlock Text="{Binding Path=Description}"/>
    <TextBlock Text="{Binding Path=Priority}"/>
  </StackPanel>
</DataTemplate>
</Window.Resources>

Teraz możesz użyć myTaskTemplate jako zasobu, jak w poniższym przykładzie:

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplate="{StaticResource myTaskTemplate}"/>

Pełny przykład można znaleźć w temacie Introduction to Data Templating Sample (Wprowadzenie do przykładu tworzenia szablonów danych).

Uwagi

Element służy ItemTemplate do określania wizualizacji obiektów danych. ItemsControl Jeśli element jest powiązany z obiektem kolekcji i nie podajesz określonych instrukcji wyświetlania przy użyciu DataTemplateelementu , wynikowy interfejs użytkownika każdego elementu jest reprezentacją ciągu każdego obiektu w kolekcji bazowej.

Po ustawieniu ItemTemplate elementu w obiekcie ItemsControlinterfejs użytkownika jest generowany w następujący sposób (przy użyciu przykładu ListBox ):

  1. Podczas generowania ItemsPanel zawartości program inicjuje żądanie utworzenia ItemContainerGenerator kontenera dla każdego elementu danych. W przypadku ListBoxkontenera jest to ListBoxItem. Generator wywołuje ponownie element w ItemsControl celu przygotowania kontenera.

  2. Część przygotowania obejmuje kopiowanie ItemTemplate elementu , który ma być elementem ListBoxItemContentTemplate .ListBox

  3. Podobnie jak we wszystkich ContentControl typach, element ControlTemplate typu ListBoxItem zawiera element ContentPresenter. Zastosowanie szablonu powoduje utworzenie obiektu ContentPresenter , którego ContentTemplate element jest powiązany ContentTemplate z elementem ListBoxItem.

  4. ContentPresenter Na koniec element dotyczy ContentTemplate samego siebie i tworzy interfejs użytkownika.

Jeśli masz więcej niż jeden DataTemplate zdefiniowany element i chcesz podać logikę, aby programowo wybrać i zastosować DataTemplateobiekt , użyj ItemTemplateSelector właściwości .

Zapewnia ItemsControl dużą elastyczność dostosowywania wizualizacji i zapewnia wiele właściwości stylów i tworzenia szablonów. ItemContainerStyle Użyj właściwości lub ItemContainerStyleSelector właściwości, aby ustawić styl, aby wpływać na wygląd elementów zawierających elementy danych. Na przykład w przypadku ListBoxkontenerów generowanych przez ListBoxItem program są kontrolkami; dla ComboBoxelementu są ComboBoxItem to kontrolki. Aby wpłynąć na układ elementów, użyj ItemsPanel właściwości . Jeśli używasz grupowania w kontrolce, możesz użyć GroupStyle właściwości lub GroupStyleSelector .

Aby uzyskać więcej informacji, zobacz Omówienie tworzenia szablonów danych.

Użycie atrybutu języka XAML

<object ItemTemplate=" ResourceExtension TemplateResourceKey"/>

Wartości XAML

Rozszerzenie zasobu Jedno z następujących elementów: StaticResource Markup Extension lub DynamicResource Markup Extension. Jeśli style same w sobie nie zawierają odwołań do potencjalnych odwołań w czasie wykonywania, takich jak zasoby systemowe lub preferencje użytkownika, odwołanie do rozszerzenia StaticResource Markup do stylu jest zwykle zalecane do wydajności.

TemplateResourceKeyx:Key, wartość ciągu dyrektywy odwołująca się do żądanego szablonu jako zasobu.

Informacje dotyczące właściwości zależności

Pole identyfikatora ItemTemplateProperty
Właściwości metadanych ustawione na true Brak

Dotyczy

Zobacz też