ItemsControl.ItemTemplateSelector プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
各項目を表示するために使用されるテンプレートを選択するためのカスタム ロジックを取得または設定します。
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
プロパティ値
ロジックを提供し、DataTemplate を返すカスタム DataTemplateSelector オブジェクト。 既定値は、null
です。
- 属性
例
次の例では、auctionItemDataTemplateSelector
(クラスにAuctionItemDataTemplateSelector
対応する) リソース名が の ItemsControlプロパティにItemTemplateSelector割り当てられます。
<ItemsControl
Template="{StaticResource ScrollTemplate}"
ItemsSource="{Binding Source={StaticResource items_list}}"
ItemTemplateSelector="{StaticResource auctionItemDataTemplateSelector}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
次の例は、 メソッドのオーバーライドを使用した AuctionItemDataTemplateSelector
クラスの実装を SelectTemplate 示しています。
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
この場合、 クラスの SelectTemplate メソッド内には、渡されたオブジェクトの プロパティの値に基づいて適切なテンプレートをSpecialFeatures
item
返すロジックがあります。 返すテンプレートは、囲んでいる Window 要素のリソース内に見つかります。
プロパティをItemTemplateSelector設定すると、 ItemsControl は、 がバインドされているコレクション内の各項目に対して の メソッドAuctionItemDataTemplateSelector
を自動的にItemsControl呼び出SelectTemplateすように指示されます。 呼び出しは、データ項目をオブジェクトとして渡します。
DataTemplateメソッドによって返される は、そのデータ項目を表示するために使用されます。
別の例については、「 データ テンプレートの概要」を参照してください。
注釈
を使用 ItemTemplate して、データ オブジェクトの視覚化を指定します。 複数のテンプレートが定義されていて、使用するテンプレートを返すロジックを指定する場合は、このプロパティを使用します。 が設定されている場合 ItemTemplate 、このプロパティは無視されることに注意してください。
は ItemsControl 、視覚的なカスタマイズに優れた柔軟性を提供し、多くのスタイル設定とテンプレートプロパティを提供します。 プロパティまたは プロパティをItemContainerStyleItemContainerStyleSelector使用して、データ項目を含む要素の外観に影響を与えるスタイルを設定します。 たとえば、 の場合 ListBox、生成されたコンテナーは ListBoxItem コントロールです。の場合 ComboBoxはコントロールです ComboBoxItem 。 項目のレイアウトに影響を与えるには、 プロパティを使用します ItemsPanel 。 コントロールでグループ化を使用している場合は、 または GroupStyleSelector プロパティをGroupStyle使用できます。
詳細については、「 データ テンプレートの概要」を参照してください。
XAML 属性の使用方法
<object ItemTemplateSelector="ResourceExtension SelectorResourceKey"/>
XAML 値
ResourceExtension 次のいずれか: StaticResource
、または DynamicResource
。 スタイル自体にシステム リソースやユーザー設定などの実行時参照の参照が含まれている場合を除き、通常、 StaticResource
パフォーマンスのためにスタイルへの参照をお勧めします。
SelectorResourceKeyx:Key
リソースとして要求されているセレクターを参照する文字列値。
依存プロパティ情報
識別子フィールド | ItemTemplateSelectorProperty |
に設定されたメタデータ プロパティ true |
なし |
適用対象
こちらもご覧ください
.NET