Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese
Questa documentazione è stata archiviata e non viene gestita.

Metodo DataTemplateSelector.SelectTemplate

Quando è sottoposto a override in una classe derivata, restituisce un oggetto DataTemplate in base alla logica personalizzata.

Spazio dei nomi:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

public virtual DataTemplate SelectTemplate(
	Object item,
	DependencyObject container
)

Parametri

item
Tipo: System.Object
L'oggetto dati per il quale selezionare il modello.
container
Tipo: System.Windows.DependencyObject
Oggetto con associazione a dati.

Valore restituito

Tipo: System.Windows.DataTemplate
Restituisce un oggetto DataTemplate o null. Il valore predefinito è null.

In genere, viene utilizzato un selettore di modello quando è disponibile più di un modello di dati definito per lo stesso tipo di oggetti. Ad esempio, se l' origine dell'associazione è un elenco di oggetti studente e si desidera applicare un particolare modello agli studenti a orario ridotto. È possibile eseguire queste operazioni creando una classe che eredita dall'oggetto DataTemplateSelector ed eseguendo l'override del metodo SelectTemplate. Dopo aver definito la classe, è possibile assegnare un'istanza della classe alla proprietà del selettore del modello dell'elemento.

In questo esempio, l' origine dell'associazione è un elenco di oggetti Task. Una delle proprietà di un oggetto Task è Priority. Sono disponibili due modelli di dati definiti, myTaskTemplate e importantTaskTemplate.

Per fornire la logica per scegliere quale DataTemplate utilizzare in base al valore Priority dell'oggetto dati, creare una sottoclasse di DataTemplateSelector ed eseguire l'override del metodo SelectTemplate. Nell'esempio seguente, il metodo SelectTemplate fornisce la logica per restituire il modello adatto basato sul valore della proprietà Priority. Il modello da restituire viene cercato nelle risorse dell'elemento Window di protezione.


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;
        }
    }
}


È possibile quindi dichiarare l'oggetto TaskListDataTemplateSelector una risorsa:


<Window.Resources>


...


<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>


...


</Window.Resources>


Per utilizzare la risorsa selettore di modello, assegnarlo alla proprietà ItemTemplateSelector del controllo ListBox. Il controllo ListBox chiama il metodo SelectTemplate del controllo TaskListDataTemplateSelector per ciascuno degli elementi dell'insieme sottostante. La chiamata passa l'oggetto di dati come parametro dell'elemento. L'oggetto DataTemplate restituito dal metodo viene quindi applicato a tale oggetto dati.


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


Per l'esempio completo, vedere Esempio di introduzione ai modelli di dati (la pagina potrebbe essere in inglese).

.NET Framework

Supportato in: 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Mostra: