DataTemplateSelector Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Lehetővé teszi az adatobjektum és az adatkötésű elem alapján történő választást DataTemplate .
public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
- Öröklődés
-
DataTemplateSelector
Példák
Ebben a példában a kötés forrása az objektumok listája Task . Az objektum egyik tulajdonsága Task a .Priority Két adatsablon van definiálva, myTaskTemplate és importantTaskTemplatea .
Annak érdekében, hogy logikát biztosítson az adatobjektum értéke alapján választható DataTemplate kiválasztásához, hozzon létre egy Priority alosztályt, és írja felül a DataTemplateSelector metódust. Az alábbi példában a metódus logikát SelectTemplate biztosít a megfelelő sablon visszaadásához a Priority tulajdonság értéke alapján. A visszaadandó sablon a burkolóelem Window erőforrásaiban található.
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;
}
}
}
Namespace SDKSample
Public Class TaskListDataTemplateSelector
Inherits DataTemplateSelector
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
Dim element As FrameworkElement
element = TryCast(container, FrameworkElement)
If element IsNot Nothing AndAlso item IsNot Nothing AndAlso TypeOf item Is Task Then
Dim taskitem As Task = TryCast(item, Task)
If taskitem.Priority = 1 Then
Return TryCast(element.FindResource("importantTaskTemplate"), DataTemplate)
Else
Return TryCast(element.FindResource("myTaskTemplate"), DataTemplate)
End If
End If
Return Nothing
End Function
End Class
End Namespace
Ezt követően deklarálhatjuk erőforrásként TaskListDataTemplateSelector :
<Window.Resources>
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
</Window.Resources>
A sablonválasztó erőforrás használatához rendelje hozzá a ItemTemplateSelector tulajdonságához a ListBox-t. A ListBox rendszer meghívja az SelectTemplateTaskListDataTemplateSelector alapul szolgáló gyűjtemény egyes elemeinek metódusát. A hívás elemparaméterként továbbítja az adatobjektumot. A DataTemplate metódus által visszaadott érték ezután az adott adatobjektumra lesz alkalmazva.
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}"
ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
HorizontalContentAlignment="Stretch"/>
A teljes minta megtekintéséhez lásd: Bevezetés az adatsablonozási mintába.
Megjegyzések
Általában akkor hoz létre, DataTemplateSelector ha egynél DataTemplate több objektummal rendelkezik ugyanahhoz az objektumtípushoz, és saját logikát szeretne megadni, hogy az egyes adatobjektumok tulajdonságai alapján válasszon ki egy DataTemplate alkalmazást. Vegye figyelembe, hogy ha különböző típusú objektumokkal rendelkezik, beállíthatja a DataType tulajdonságot a DataTemplate. Ha ezt teszi, akkor nem kell létrehoznia egy DataTemplateSelector. Továbbá, ha azonos típusú, de eltérő tulajdonságokkal rendelkező objektumokkal rendelkezik, érdemes lehet egy DataTrigger vagy egy adatkonvertert is használnia. További információ: Data Templating Overview.
Sablonválasztó létrehozásához hozzon létre egy osztályt, amely örökli DataTemplateSelector és felülbírálja a metódust SelectTemplate . Az osztály definiálása után hozzárendelheti az osztály egy példányát az elem sablonválasztó tulajdonságához.
Konstruktorok
| Név | Description |
|---|---|
| DataTemplateSelector() |
Inicializálja a DataTemplateSelector osztály új példányát. |
Metódusok
| Név | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| SelectTemplate(Object, DependencyObject) |
Ha egy származtatott osztályban felül van bírálva, az egyéni logikán alapuló értéket ad vissza DataTemplate . |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |