DataTemplateSelector Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Veri nesnesine ve veriye bağlı öğeye göre bir DataTemplate seçim yapmak için bir yol sağlar.
public ref class DataTemplateSelector
public class DataTemplateSelector
type DataTemplateSelector = class
Public Class DataTemplateSelector
- Devralma
-
DataTemplateSelector
Örnekler
Bu örnekte, bağlama kaynağı nesnelerin listesidir Task . Bir Task nesnenin özelliklerinden biri de şeklindedir Priority. tanımlanmış myTaskTemplate iki veri şablonu vardır ve importantTaskTemplate.
Veri nesnesinin DataTemplate değerine dayanarak hangi Priority kullanılacağını seçmek için, DataTemplateSelector sınıfının bir alt sınıfını oluşturun ve SelectTemplate yöntemini geçersiz kılın. Aşağıdaki örnekte, SelectTemplate metodu, Priority özellik değerine göre uygun şablonu döndürmek için bir mantık sağlar. Döndürülecek şablon, çevreleyen Window öğesinin kaynaklarında bulunur.
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
Ardından TaskListDataTemplateSelector öğesini bir kaynak olarak bildirebiliriz.
<Window.Resources>
<local:TaskListDataTemplateSelector x:Key="myDataTemplateSelector"/>
</Window.Resources>
Şablon seçici kaynağını kullanmak için, ItemTemplateSelector özelliğini ListBox öğesine atayın.
ListBox, temel alınan koleksiyondaki öğelerin her biri için SelectTemplate öğesinin TaskListDataTemplateSelector yöntemini çağırır. Çağrısı, veri nesnesini öğe parametresi olarak geçirir. Yöntem tarafından döndürülen DataTemplate, daha sonra bu veri nesnesine uygulanır.
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource myTodoList}}"
ItemTemplateSelector="{StaticResource myDataTemplateSelector}"
HorizontalContentAlignment="Stretch"/>
Örneğin tamamı için bkz. Veri Şablon Oluşturma Örneğine Giriş.
Açıklamalar
Genellikle, aynı nesne türü için birden DataTemplate fazla nesneniz olduğunda ve her veri nesnesinin özelliklerine göre uygulamak üzere bir DataTemplate seçmek üzere kendi mantığınızı sağlamak istediğinizde bir DataTemplateSelector oluşturursunuz. Farklı türlerdeki nesneleriniz varsa özelliğini üzerinde ayarlayabileceğinizi DataTypeDataTemplateunutmayın. Bunu yaparsanız, oluşturmanıza DataTemplateSelectorgerek yoktur. Ayrıca, aynı türde ancak farklı özelliklere sahip nesneleriniz varsa veya veri dönüştürücüsü kullanmayı DataTrigger da düşünebilirsiniz. Daha fazla bilgi için bkz. Veri Şablon oluşturmaya genel bakış.
Şablon seçici oluşturmak için yöntemini devralan ve geçersiz kılan DataTemplateSelectorSelectTemplate bir sınıf oluşturun. Sınıfınız tanımlandıktan sonra, öğesinin şablon seçici özelliğine sınıfının bir örneğini atayabilirsiniz.
Oluşturucular
| Name | Description |
|---|---|
| DataTemplateSelector() |
DataTemplateSelector sınıfının yeni bir örneğini başlatır. |
Yöntemler
| Name | Description |
|---|---|
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| SelectTemplate(Object, DependencyObject) |
Türetilmiş bir sınıfta geçersiz kılındığında, özel mantığı temel alan bir DataTemplate döndürür. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |