Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

TabControl.ContentTemplateSelector-Eigenschaft

Ruft einen DataTemplateSelector ab, der benutzerdefinierte Logik für die Auswahl der Registerkarte bereitstellt, mit der der Inhalt des Steuerelements angezeigt wird, oder legt diesen fest.

Namespace:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public DataTemplateSelector ContentTemplateSelector { get; set; }
<object>
  <object.ContentTemplateSelector>
    <MyDataTemplateSelectorImplementation .../>
  </object.ContentTemplateSelector>
</object>
<object ContentTemplateSelector="{ResourceExtension DataTemplateSelectorClassKey}"/>

XAML-Werte

ResourceExtension

Eine StaticResource oder DynamicResource. Siehe XAML-Ressourcen.

DataTemplateSelectorClassKey

Der Schlüssel, der die angeforderte Auswahlimplementierung identifiziert. Der Schlüssel verweist auf eine abgeleitete Klasse, die eine praktische SelectTemplate-Überschreibung implementiert. Weitere Informationen über das Zuordnen zur benutzerdefinierten Klasse finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML. Sie können auch einem Ressourcenwörterbuch programmgesteuert eine Instanz der DataTemplateSelector-Klasse als Ressource hinzufügen.

MyDataTemplateSelectorImplementation

Eine Klasse, die von DataTemplateSelector abgeleitet ist und SelectTemplate überschreibt. Weitere Informationen über das Zuordnen zur benutzerdefinierten Klasse finden Sie unter XAML-Namespaces und Namespacezuordnung für WPF-XAML.

Eigenschaftswert

Typ: System.Windows.Controls.DataTemplateSelector
ContentTemplateSelector Der Standardwert ist null.

Bezeichnerfeld

ContentTemplateSelectorProperty

Auf true festgelegte Metadateneigenschaften

Kein

Normalerweise erstellen Sie einen DataTemplateSelector, wenn Sie über mehr als eine DataTemplate für denselben Objekttyp verfügen und eine eigene Logik für die Auswahl einer DataTemplate bereitstellen möchten, die anhand der Eigenschaften der einzelnen Datenobjekte angewendet werden soll. Beachten Sie Folgendes: Wenn Sie über Objekte verschiedener Typen verfügen, können Sie die DataType-Eigenschaft für die DataTemplate festlegen. Wenn Sie sich für diese Vorgehensweise entscheiden, müssen Sie keinen DataTemplateSelector erstellen. Wenn Sie über Objekte verfügen, die denselben Typ, jedoch unterschiedliche Eigenschaften aufweisen, empfiehlt es sich möglicherweise, einen DataTrigger oder einen Datenkonverter zu verwenden. Weitere Informationen finden Sie unter Übersicht über Datenvorlagen.

Wenn Sie eine Vorlagenauswahl erstellen möchten, erstellen Sie eine Klasse, die von DataTemplateSelector erbt, und überschreiben Sie die SelectTemplate-Methode. Nach dem Definieren der Klasse können Sie der Vorlagenauswahleigenschaft des Elements eine Instanz der Klasse zuweisen.

Wenn sowohl die ContentTemplateSelector-Eigenschaft als auch die ContentTemplate-Eigenschaft festgelegt ist, wird diese Eigenschaft ignoriert.

Im folgenden Beispiel wird mit der ContentTemplateSelector-Eigenschaft der Inhalt eines TabItem unterschiedlich angezeigt, in Abhängigkeit vom 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
    Inherits DataTemplateSelector

    Public Overrides Function SelectTemplate(ByVal item As Object, _
                     ByVal container As DependencyObject) As DataTemplate

        ' The content of each TabItem is a Person object.
        If TypeOf item Is Person Then

            Dim person As Person = item

            Dim win As Window = Application.Current.MainWindow

            ' Select one of the DataTemplate objects, based on the 
            ' person's home town.
            If person.HomeTown = "Seattle" Then
                Return win.FindResource("SeattleTemplate")
            Else
                Return win.FindResource("DetailTemplate")

            End If
        End If

        Return Nothing
    End Function

End Class



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

Unterstützt in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft