ItemsControl.ItemTemplateSelector Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví vlastní logiku pro výběr šablony použité k zobrazení jednotlivých položek.
public:
property System::Windows::Controls::DataTemplateSelector ^ ItemTemplateSelector { System::Windows::Controls::DataTemplateSelector ^ get(); void set(System::Windows::Controls::DataTemplateSelector ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.Controls.DataTemplateSelector ItemTemplateSelector { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ItemTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ItemTemplateSelector As DataTemplateSelector
Hodnota vlastnosti
Vlastní DataTemplateSelector objekt, který poskytuje logiku DataTemplatea vrací hodnotu . Výchozí formát je null
.
- Atributy
Příklady
V následujícím příkladu auctionItemDataTemplateSelector
je název prostředku (odpovídající AuctionItemDataTemplateSelector
třídě) přiřazen vlastnost ItemTemplateSelector .ItemsControl
<ItemsControl
Template="{StaticResource ScrollTemplate}"
ItemsSource="{Binding Source={StaticResource items_list}}"
ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Následující příklad ukazuje implementaci AuctionItemDataTemplateSelector
třídy s přepsání SelectTemplate metody:
using System.Windows;
using System.Windows.Controls;
namespace SDKSample
{
public class AuctionItemDataTemplateSelector : DataTemplateSelector
{
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
FrameworkElement element = container as FrameworkElement;
if (element != null && item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
Window window = Application.Current.MainWindow;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
element.FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
element.FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}
}
}
Namespace SDKSample
Public Class AuctionItemDataTemplateSelector
Inherits DataTemplateSelector
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
Dim element As FrameworkElement = TryCast(container, FrameworkElement)
If element isnot Nothing andalso item IsNot Nothing AndAlso TypeOf item Is AuctionItem Then
Dim auctionItem As AuctionItem = TryCast(item, AuctionItem)
Select Case auctionItem.SpecialFeatures
Case SpecialFeatures.None
Return TryCast(element.FindResource("AuctionItem_None"), DataTemplate)
Case SpecialFeatures.Color
Return TryCast(element.FindResource("AuctionItem_Color"), DataTemplate)
End Select
End If
Return Nothing
End Function
End Class
End Namespace
V tomto případě v rámci SelectTemplate metody třídy existuje logika pro vrácení příslušné šablony na základě hodnoty SpecialFeatures
vlastnosti předaného objektu item
. Šablona, která se má vrátit, se nachází v prostředcích elementu zkosení Window .
Když nastavíte ItemTemplateSelector vlastnost, ItemsControl směruje se automaticky volání SelectTemplate metody AuctionItemDataTemplateSelector
pro každou položku v kolekci, na kterou ItemsControl je vázán. Volání předá datovou položku jako objekt. Vrácené DataTemplate metodou se pak použije k zobrazení této datové položky.
Další příklad najdete v tématu Přehled šablon dat.
Poznámky
Použijete ItemTemplate k určení vizualizace datových objektů. Pokud máte definovanou více než jednu šablonu a chcete zadat logiku pro vrácení šablony, kterou chcete použít, použijte tuto vlastnost. Všimněte si, že tato vlastnost je ignorována, pokud ItemTemplate je nastavena.
Poskytuje ItemsControl velkou flexibilitu pro přizpůsobení vizuálu a poskytuje mnoho vlastností stylů a šablon. ItemContainerStyle Pomocí vlastnosti nebo ItemContainerStyleSelector vlastnosti nastavte styl, který má vliv na vzhled prvků, které obsahují datové položky. Například pro ListBoxvygenerované kontejnery jsou ListBoxItem ovládací prvky; pro ComboBox, jsou ComboBoxItem to ovládací prvky. Chcete-li ovlivnit rozložení položek, použijte ItemsPanel vlastnost. Pokud používáte seskupení na ovládacím prvku, můžete použít GroupStyle vlastnost nebo GroupStyleSelector vlastnost.
Další informace najdete v tématu Přehled šablon dat.
Použití atributu XAML
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
Hodnoty XAML
ResourceExtension
Jedna z následujících možností: StaticResource
nebo DynamicResource
. Pokud samotné styly neobsahují odkazy na potenciální odkazy na dobu běhu, jako jsou systémové prostředky nebo uživatelské předvolby, StaticResource
odkaz na styl se obvykle doporučuje pro zvýšení výkonu.
SelectorResourceKey
x:Key
řetězcová hodnota odkazující na selektor, který se požaduje jako prostředek.
Informace o vlastnosti závislosti
Pole identifikátoru | ItemTemplateSelectorProperty |
Vlastnosti metadat nastavené na true |
Žádné |