ItemsControl.ItemTemplate Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 ):
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.
Część przygotowania obejmuje kopiowanie ItemTemplate elementu , który ma być elementem ListBoxItemContentTemplate .ListBox
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.
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 |