2010-12-31 6 views
5

Ich habe ein ItemsControl mit einem StackPanel, um eine Liste von Elementen anzuzeigen.Kann ich einen DataTemplateSelector in einem DataTemplate verwenden?

Ich möchte eine Beschriftung für jede Zeile angezeigt werden, aber für den Inhalt auf der linken Seite der Beschriftung von einem DataTemplateSelector definiert werden. Ich möchte die Bezeichnung für jedes DataTemplate, das von dem TemplateSelector generiert wird, nicht neu definieren.

Ist das möglich?

<ItemsControl ItemsSource="{Binding Path=Values}" > 
<ItemsControl.Resources> 
    <v:MyTemplateSelector x:Key="myTemplateSelector"></v:MyTemplateSelector> 
</ItemsControl.Resources> 
<ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
    <StackPanel></StackPanel> 
    </ItemsPanelTemplate> 
</ItemsControl.ItemsPanel> 
<ItemsControl.ItemTemplate> 
    <DataTemplate> 
    <WrapPanel> 
    <Label>Test: </Label> 
    <!--What goes here should be defined by myTemplateSelector--> 
    </WrapPanel> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
</ItemsControl> 

Antwort

6

Ich fand es heraus. Die Lösung bestand darin, ein ContentPresenter-Element mit einem ContentTemplateSelector-Attribut zu verwenden:

<DataTemplate> 
     <WrapPanel> 
      <Label>Test: </Label> 
      <ContentPresenter 
       ContentTemplateSelector="{StaticResource ResourceKey=myTemplateSelector}"> 
      </ContentPresenter> 
     </WrapPanel> 
    </DataTemplate> 
Verwandte Themen