DataTemplateSelector Třída

Definice

Poskytuje způsob, jak zvolit objekt DataTemplate na základě datového objektu a prvku vázaného na data.

C#
public class DataTemplateSelector
Dědičnost
DataTemplateSelector

Příklady

V tomto příkladu je zdrojem vazby seznam Task objektů. Jednou z vlastností objektu Task je Priority. Jsou definovány dvě šablony dat, myTaskTemplate a importantTaskTemplate.

Chcete-li zadat logiku pro výběr, který DataTemplate se má použít na Priority základě hodnoty datového objektu, vytvořte podtřídu DataTemplateSelector a přepište metodu SelectTemplate . V následujícím příkladu metoda poskytuje logiku SelectTemplate pro vrácení příslušné šablony na základě hodnoty Priority vlastnosti . Šablona, která se má vrátit, se nachází v prostředcích elementu obálky Window .

C#
using System.Windows;
using System.Windows.Controls;

namespace SDKSample
{
    public class TaskListDataTemplateSelector : DataTemplateSelector
    {
        public override DataTemplate
            SelectTemplate(object item, DependencyObject container)
        {
            FrameworkElement element = container as FrameworkElement;

            if (element != null && item != null && item is Task)
            {
                Task taskitem = item as Task;

                if (taskitem.Priority == 1)
                    return
                        element.FindResource("importantTaskTemplate") as DataTemplate;
                else
                    return
                        element.FindResource("myTaskTemplate") as DataTemplate;
            }

            return null;
        }
    }
}

Pak můžeme deklarovat TaskListDataTemplateSelector jako prostředek:

XAML
<Window.Resources>
XAML
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
XAML
</Window.Resources>

Pokud chcete použít prostředek selektoru šablon, přiřaďte ho ItemTemplateSelectorListBoxk vlastnosti . Volá ListBox metodu SelectTemplateTaskListDataTemplateSelector pro každou položku v podkladové kolekci. Volání předá datový objekt jako parametr položky. Objekt DataTemplate vrácený metodou se pak použije na tento datový objekt.

XAML
<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}"
         ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
         HorizontalContentAlignment="Stretch"/>

Kompletní ukázku najdete v tématu Úvod do ukázky šablon dat.

Poznámky

Obvykle se vytváří DataTemplateSelector , když máte více než jeden DataTemplate pro stejný typ objektů a chcete zadat vlastní logiku pro volbu DataTemplate , která se použije na základě vlastností každého datového objektu. Všimněte si, že pokud máte objekty různých typů, můžete nastavit DataType vlastnost v objektu DataTemplate. Pokud to uděláte, není potřeba vytvářet DataTemplateSelector. Pokud máte objekty stejného typu, ale s různými vlastnostmi, můžete také zvážit použití DataTrigger převaděče dat nebo . Další informace najdete v tématu Přehled šablon dat.

Pokud chcete vytvořit selektor šablony, vytvořte třídu, která dědí z DataTemplateSelector a přepíše metodu SelectTemplate . Jakmile je vaše třída definována, můžete přiřadit instanci třídy k selektoru šablony vlastnost prvku.

Konstruktory

DataTemplateSelector()

Inicializuje novou instanci DataTemplateSelector třídy .

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SelectTemplate(Object, DependencyObject)

Při přepsání v odvozené třídě vrátí hodnotu na DataTemplate základě vlastní logiky.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Produkt Verze
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10