ContentControl.ContentTemplateSelector 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
애플리케이션 작성기에서 사용자 지정 템플릿 선택 논리를 제공하도록 하는 템플릿 선택기를 가져오거나 설정합니다.
public:
property System::Windows::Controls::DataTemplateSelector ^ ContentTemplateSelector { System::Windows::Controls::DataTemplateSelector ^ get(); void set(System::Windows::Controls::DataTemplateSelector ^ value); };
[System.ComponentModel.Bindable(true)]
public System.Windows.Controls.DataTemplateSelector ContentTemplateSelector { get; set; }
[<System.ComponentModel.Bindable(true)>]
member this.ContentTemplateSelector : System.Windows.Controls.DataTemplateSelector with get, set
Public Property ContentTemplateSelector As DataTemplateSelector
속성 값
데이터 템플릿 선택기입니다. 기본값은 null
입니다.
- 특성
예제
다음 예제에서는 ContentTemplateSelector 속성을 사용하는 방법을 보여 줍니다. 이 예제에서 선택한 항목에 바인딩합니다를 ComboBox 에 Content 의 속성을 Label에서 상속 하는 ContentControl합니다. 선택한 항목의 값에서 검은색 사각형 안에 나타납니다 사용자가 5 보다 작은 값을 선택 하면는 Label합니다. 5는 값을 선택할 때 이상이 면 녹색 타원에 값이 나타납니다. 이 예제에서는 두 개의 여이 수행 DataTemplate 개체 및 DataTemplateSelector로 설정 되는 ContentTemplateSelector 속성 적절 한 선택 DataTemplate 선택한 항목의 값을 기반으로 합니다.
<Window.Resources>
<!--Create two DataTemplate objects to be
selected by the DataTemplateSelector.-->
<DataTemplate x:Key="numberTemplate">
<Grid>
<Rectangle Stroke="Black" />
<TextBlock Margin="5" Text="{Binding}" FontSize="18"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="largeNumberTemplate">
<Grid>
<Ellipse Stroke="Green" StrokeThickness="4"/>
<TextBlock Margin="10" Text="{Binding}" FontSize="24"
Foreground="Red" FontWeight="Bold" />
</Grid>
</DataTemplate>
<local:NumberDataTemplateSelector x:Key="numberTemplateSelector"
NumberTemplate="{StaticResource numberTemplate}"
LargeNumberTemplate="{StaticResource largeNumberTemplate}"/>
</Window.Resources>
<StackPanel>
<!--Bind the content of the Label to the selected item
in the ComboBox.-->
<Label Foreground="Black"
Content="{Binding ElementName=numberList, Path=SelectedItem.Content}"
ContentTemplateSelector="{StaticResource numberTemplateSelector}">
</Label>
<ComboBox Name="numberList">
<ComboBoxItem>1</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>3</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>5</ComboBoxItem>
<ComboBoxItem>6</ComboBoxItem>
<ComboBoxItem IsSelected="True">7</ComboBoxItem>
<ComboBoxItem>8</ComboBoxItem>
<ComboBoxItem>9</ComboBoxItem>
<ComboBoxItem>10</ComboBoxItem>
</ComboBox>
</StackPanel>
public class NumberDataTemplateSelector : DataTemplateSelector
{
public DataTemplate NumberTemplate { get; set; }
public DataTemplate LargeNumberTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
// Null value can be passed by IDE designer
if (item == null) return null;
var num = Convert.ToInt32((string)item);
// Select one of the DataTemplate objects, based on the
// value of the selected item in the ComboBox.
if (num < 5)
{
return NumberTemplate;
}
else
{
return LargeNumberTemplate;
}
}
}
Public Class NumberDataTemplateSelector
Inherits DataTemplateSelector
Public Property NumberTemplate As DataTemplate
Public Property LargeNumberTemplate As DataTemplate
Public Overrides Function SelectTemplate(ByVal item As Object, _
ByVal container As DependencyObject) As DataTemplate
' Nothing can be passed by IDE designer
if (item Is Nothing) Then
Return Nothing
End If
Dim num = Convert.ToInt32(CStr(item))
' Select one of the DataTemplate objects, based on the
' value of the selected item in the ComboBox.
If num < 5 Then
Return NumberTemplate
Else
Return LargeNumberTemplate
End If
End Function 'SelectTemplate
End Class
설명
일반적으로 DataTemplateSelector 둘 이상 있는 경우 DataTemplate 선택 하는 사용자 고유의 논리를 제공 하려면 동일한 유형의 개체에 대 한를 DataTemplate 각 데이터 개체의 속성을 기반으로 적용 합니다. 다른 개체가 여러 개 있는 경우 형식을 설정할 수는 DataType 속성에는 DataTemplate합니다. 이렇게 할 경우 만들 필요가 없습니다를 DataTemplateSelector입니다. 또한 동일한 형식의 있지만 다른 속성을 사용 하 여 개체에 있으면 수도 있습니다를 사용 하 여를 DataTrigger 또는 데이터 변환기입니다. 자세한 내용은 데이터 템플릿 개요를 참조하세요.
템플릿 선택기를 만들려면에서 상속 되는 클래스를 만듭니다 DataTemplateSelector 재정의 SelectTemplate 메서드. 클래스를 정의한 후에 요소의 템플릿 선택기 속성에는 클래스의 인스턴스를 할당할 수 있습니다.
두 경우는 ContentTemplateSelector 하며 ContentTemplate 속성이 설정 된 후이 속성은 무시 됩니다.
XAML 특성 사용
<object ContentTemplateSelector="{ResourceExtension TemplateSelectorKey}"/>
XAML 값
ResourceExtension
템플릿 리소스를 하거나 참조 하는 방법을 식별 하는 태그 확장 StaticResource
또는 DynamicResource
합니다. 참조 XAML 리소스합니다.
TemplateSelectorKey
요청된 된 템플릿 선택기를 식별 하는 키입니다. 키의 기존 리소스에 참조를 ResourceDictionary입니다.
종속성 속성 정보
식별자 필드 | ContentTemplateSelectorProperty |
메타 데이터 속성 설정 true |
없음 |