(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

ContentControl.ContentTemplateSelector-Eigenschaft

Aktualisiert: November 2007

Ruft eine Vorlagenauswahl ab, mit der Anwendungsentwickler Auswahllogik für benutzerdefinierte Vorlagen bereitstellen können, oder legt diese fest. Dies ist eine Abhängigkeitseigenschaft.

Namespace:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/xaml/presentation
[BindableAttribute(true)]
public DataTemplateSelector ContentTemplateSelector { get; set; }
/** @property */
/** @attribute BindableAttribute(true) */
public DataTemplateSelector get_ContentTemplateSelector()
/** @property */
/** @attribute BindableAttribute(true) */
public  void set_ContentTemplateSelector(DataTemplateSelector value)

public function get ContentTemplateSelector () : DataTemplateSelector
public function set ContentTemplateSelector (value : DataTemplateSelector)
<object>
  <object.ContentTemplateSelector>
    <DataTemplateSelector .../>
  </object.ContentTemplateSelector>
</object>
<object ContentTemplateSelector="{ResourceExtension TemplateSelectorKey}"/>
ResourceExtension
                    Eine Markuperweiterung, die angibt, wie auf die Vorlagenressource, StaticResource oder DynamicResource, verwiesen wird. Siehe Übersicht über Ressourcen.
                TemplateSelectorKey
                    Der Schlüssel, der die angeforderte Vorlagenauswahl identifiziert. Der Schlüssel verweist in einem ResourceDictionary auf eine vorhandene Ressource.
                

Eigenschaftenwert

Typ: System.Windows.Controls.DataTemplateSelector
Eine Datenvorlagenauswahl. Der Standardwert ist null.

Bezeichnerfeld

ContentTemplateSelectorProperty

Auf true festgelegte Metadateneigenschaften.

Keiner

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 die Verwendung der ContentTemplateSelector-Eigenschaft veranschaulicht. In diesem Beispiel wird das ausgewählte Element in einer ComboBox an die Content-Eigenschaft eines Label gebunden, das von ContentControl erbt. Wenn der Benutzer einen kleineren Wert als 5 auswählt, wird der Wert des ausgewählten Elements im Label in einem schwarzen Quadrat angezeigt. Wenn der Benutzer den Wert 5 oder einen größeren Wert auswählt, wird der Wert in einer grünen Ellipse angezeigt. Dazu werden zwei DataTemplate-Objekte und ein DataTemplateSelector erstellt, der auf die ContentTemplateSelector-Eigenschaft festgelegt wird und das entsprechende DataTemplate anhand des Werts des ausgewählten Elements auswählt.

<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:NumderDataTemplateSelector x:Key="numberTemplateSelector"/>

</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 NumderDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        string numberStr = item as string;

        if (numberStr != null)
        {
            int num;
            Window win = Application.Current.MainWindow;

            try
            {
                num = Convert.ToInt32(numberStr);
            }
            catch
            {
                return null;
            }

            // Select one of the DataTemplate objects, based on the 
            // value of the selected item in the ComboBox.
            if (num < 5)
            {
                return win.FindResource("numberTemplate") as DataTemplate;
            }
            else
            {
                return win.FindResource("largeNumberTemplate") as DataTemplate;

            }
        }

        return null;
    }

}


Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.