2010-12-31 11 views
5

Tengo un ItemsControl usando un StackPanel para mostrar una lista de elementos.¿Puedo usar un DataTemplateSelector dentro de un DataTemplate?

Me gustaría que apareciera una etiqueta para cada fila, pero para que el contenido a la izquierda de la etiqueta sea definido por un DataTemplateSelector. No quiero redefinir la etiqueta para cada DataTemplate generado por TemplateSelector.

¿Esto es posible?

<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> 

Respuesta

6

Me di cuenta. La solución fue utilizar un elemento ContentPresenter con un atributo ContentTemplateSelector:

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