2010-12-31 2 views
5

У меня есть ItemControl с помощью StackPanel для отображения списка элементов.Могу ли я использовать DataTemplateSelector в DataTemplate?

Я хотел бы, чтобы метка отображалась для каждой строки, но для содержимого слева от метки, определяемой DataTemplateSelector. Я не хочу переопределять метку для каждого DataTemplate, сгенерированного TemplateSelector.

Возможно ли это?

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

ответ

6

Я понял. Решение заключалось в использовании элемента ContentPresenter с атрибутом ContentTemplateSelector:

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