Frage

Ich habe ein ItemsControl mit einem Stackpanel, um eine Liste von Elementen anzuzeigen.

Ich möchte, dass ein Etikett für jede Zeile angezeigt wird, aber für den Inhalt links vom Etikett, der von einem DataTeMplatesSelector definiert wird. Ich möchte das Etikett für jede vom Vorlagenseleger generierte DataTemplate 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>
War es hilfreich?

Lösung

Ich habe es herausgefunden. 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top