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í každé položky.
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í . 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 vlastnosti ItemTemplateSelectorItemsControl.
<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 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 obálky Window .
Když nastavíte ItemTemplateSelector vlastnost , ItemsControl je směrována na automatické volání SelectTemplate metody AuctionItemDataTemplateSelector
pro pro každou položku v kolekci, ke které ItemsControl je vázán. Volání předá datovou položku jako objekt. Objekt DataTemplate vrácený 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 k ItemTemplate určení vizualizace datových objektů. Pokud máte definováno více než jednu šablonu a chcete zadat logiku pro vrácení šablony k použití, použijte tuto vlastnost. Všimněte si, že tato vlastnost je ignorována, pokud ItemTemplate je nastavena.
Poskytuje ItemsControl velkou flexibilitu pro vizuální přizpůsobení a poskytuje mnoho vlastností stylů a šablon. ItemContainerStyle Pomocí vlastnosti nebo ItemContainerStyleSelector vlastnosti můžete nastavit styl tak, aby ovlivnil vzhled prvků, které obsahují datové položky. Například pro ListBoxjsou vygenerované kontejnery ListBoxItem ovládací prvky, pro ComboBoxjsou to ComboBoxItem ovládací prvky. Chcete-li ovlivnit rozložení položek, použijte ItemsPanel vlastnost . Pokud u ovládacího prvku používáte seskupování, můžete použít GroupStyle vlastnost nebo GroupStyleSelector .
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 za běhu, jako jsou systémové prostředky nebo uživatelské předvolby, StaticResource
obvykle se z hlediska výkonu doporučuje odkaz na styl.
SelectorResourceKeyx:Key
hodnota řetězce odkazující na selektor, který se požaduje jako prostředek.
Informace o vlastnosti závislosti
Pole Identifikátor | ItemTemplateSelectorProperty |
Vlastnosti metadat nastavené na true |
Žádné |