我能否在DataTemplate中使用DataTemplateSelector?

6

我有一个ItemsControl,使用StackPanel来显示一系列项目。

我希望每行都有一个标签,但是标签左侧的内容由DataTemplateSelector定义。 我不想为模板选择器生成的每个DataTemplate重新定义标签。

这可行吗?

<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>
1个回答

7

我找到了解决办法。解决方案是使用一个带有ContentTemplateSelector属性的ContentPresenter元素:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接