首页 文章

我可以在DataTemplate中使用DataTemplateSelector吗?

提问于
浏览
5

我有一个使用StackPanel的ItemsControl来显示项目列表 .

我想为每一行显示一个标签,但是对于由DataTemplateSelector定义的标签左侧的内容 . 我不想重新定义TemplateSelector生成的每个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 回答

  • 6

    我想到了 . 解决方案是使用具有ContentTemplateSelector属性的ContentPresenter元素:

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

相关问题