Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

TabControl.ContentTemplateSelector-Eigenschaft

 

Veröffentlicht: Oktober 2016

Ruft ab oder legt eine DataTemplateSelector die benutzerdefinierte Logik bereitstellt, zum Auswählen der Vorlage, die verwendet wird, um den Inhalt des Steuerelements anzuzeigen.

Namespace:   System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

public DataTemplateSelector ContentTemplateSelector { get; set; }

Eigenschaftswert

Type: System.Windows.Controls.DataTemplateSelector

Ein ContentTemplateSelector. Die Standardeinstellung ist null.

Normalerweise erstellen Sie eine DataTemplateSelector wenn Sie haben mehr als eine DataTemplate für den gleichen Typ von Objekten, und Sie möchten eigene Logik für die Auswahl einer DataTemplate Anwenden auf Grundlage der Eigenschaften der einzelnen Datenobjekte. Beachten Sie, dass wenn Sie über Objekte verschiedener Typen verfügen, können Sie festlegen der DataType Eigenschaft für die DataTemplate. Wenn dies der Fall, die, besteht keine Notwendigkeit zum Erstellen einer DataTemplateSelector. Außerdem, wenn Sie Objekte des gleichen Typs und mit verschiedenen Eigenschaften verfügen, Sie können auch in Betracht ein DataTrigger oder ein Datenkonverter. Weitere Informationen finden Sie unter Übersicht über Datenvorlagen.

Um eine Vorlagenauswahl erstellen möchten, erstellen Sie eine Klasse, die von erbt DataTemplateSelector und überschreiben die SelectTemplate Methode. Nachdem die Klasse definiert ist, können Sie die Template-Selektor-Eigenschaft des Elements eine Instanz der Klasse zuweisen.

Wenn die ContentTemplateSelector und die ContentTemplate Eigenschaften werden festgelegt, wird diese Eigenschaft ignoriert.

<object ContentTemplateSelector="{ResourceExtension DataTemplateSelectorClassKey}"/>

<object>
  <object.ContentTemplateSelector>
    <MyDataTemplateSelectorImplementation .../>
  </object.ContentTemplateSelector>
</object>

ResourceExtension

Einer der folgenden: StaticResource, oder DynamicResource. Finden Sie unter XAML-Ressourcen.

DataTemplateSelectorClassKey

Der Schlüssel, der die angeforderten Selector-Implementierung identifiziert. Der Schlüssel verweist auf eine abgeleitete Klasse, die eine praktische implementiert SelectTemplate außer Kraft setzen. Informationen dazu, wie Sie Ihre benutzerdefinierte Klasse zuordnen, finden Sie unter XAML-Namespaces und Namespace-Zuordnung für WPF-XAML. Sie können auch programmgesteuert hinzufügen, eine Instanz der DataTemplateSelector Klasse als Ressource in einem Ressourcenverzeichnis.

MyDataTemplateSelectorImplementation

Eine abgeleitete Klasse DataTemplateSelector und überschreibt SelectTemplate. Informationen dazu, wie Sie Ihre benutzerdefinierte Klasse zuordnen, finden Sie unter XAML-Namespaces und Namespace-Zuordnung für WPF-XAML.

Feld-ID

ContentTemplateSelectorProperty

Festgelegte Metadateneigenschaften true

Keine

Im folgenden Beispiel wird die ContentTemplateSelector Eigenschaft, um den Inhalt anzeigen einer TabItem unterschiedlich, abhängig von der Heimatort der jeweils ausgewählten Person.

<DataTemplate x:Key="DetailTemplate">
  <Border Width="300" Height="100" Margin="20"
          BorderBrush="Aqua" BorderThickness="1" Padding="8">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100"/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <TextBlock Grid.Row="0" Grid.Column="0" Text="First Name:"/>
      <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=FirstName}"/>
      <TextBlock Grid.Row="1" Grid.Column="0" Text="Last Name:"/>
      <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=LastName}"/>
      <TextBlock Grid.Row="2" Grid.Column="0" Text="Home Town:"/>
      <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Path=HomeTown}"/>
    </Grid>
  </Border>
</DataTemplate>

<DataTemplate x:Key="SeattleTemplate">
  <DataTemplate.Resources>
    <Style TargetType="TextBlock">
      <Setter Property="FontSize" Value="16"/>
    </Style>
  </DataTemplate.Resources>
  <Border Width="300" Height="100" Margin="20"
          BorderBrush="DarkSeaGreen" BorderThickness="3" Padding="15">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="120"/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <TextBlock Grid.Row="0" Grid.Column="0" Text="Please welcome"/>
      <DockPanel Grid.Row="0" Grid.Column="1" >
        <TextBlock Text="{Binding Path=FirstName}"/>
        <TextBlock Text=" "/>
        <TextBlock Text="{Binding Path=LastName}"/>
      </DockPanel>
      <TextBlock Grid.Row="1" Grid.ColumnSpan="2" Text="from the Emerald City!"/>
    </Grid>
  </Border>
</DataTemplate>
<!--Bind to the collection MyFriends and use a DataTemplateSelector
to specify the appearance of the content.-->
<TabControl Name="tabCtrl1" Width="400" Height="200" 
         ItemsSource="{Binding Source={StaticResource MyFriends}}"
         ContentTemplateSelector="{StaticResource PersonSelector}"/>
public class PersonTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {

        // The content of each TabItem is a Person object.
        if (item is Person)
        {
            Person person = item as Person;

            Window win = Application.Current.MainWindow;

            // Select one of the DataTemplate objects, based on the 
            // person's home town.
            if (person.HomeTown == "Seattle")
            {
                return win.FindResource("SeattleTemplate") as DataTemplate;
            }
            else
            {
                return win.FindResource("DetailTemplate") as DataTemplate;

            }
        }

        return null;
    }

}

.NET Framework
Verfügbar seit 3.0
Zurück zum Anfang
Anzeigen: