2013-09-05 4 views
2

Comment puis-je spécifier plusieurs DataTemplate dans windows.resources pour une utilisation par ContentControl? Mon code:Comment puis-je spécifier plusieurs DataTemplate dans windows.resources pour une utilisation par ContentControl

<Window.Resources> 
    <DataTemplate x:Key="CustomerTemplate" DataType="{x:Type local:Customer}"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Text="{Binding FirstName}"/> 
      <TextBlock Text=" ("/> 
      <TextBlock Text="{Binding Occupation}"/> 
      <TextBlock Text=")"/> 
     </StackPanel> 
    </DataTemplate> 
    <DataTemplate x:Key="PersonTemplate" DataType="{x:Type local:Person}"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Text="{Binding FirstName}"/> 
      <TextBlock Text=" - "/> 
      <TextBlock Text="{Binding LastName}"/> 
     </StackPanel> 
    </DataTemplate> 
</Window.Resources> 

Merci beaucoup!

Répondre

1

Utilisez DataTemplateSelector pour retourner le datatemplate que vous voulez appliquer ..

<ContentControl ContentTemplateSelector="{StaticResource MyTemplateSelector}"/> 

ici MYtemplateselector est DataTemplateSelector, dans la méthode de sélection Select() vous pouvez vérifier la propriété liée à ContentControl et retourner le datatemplate correspondant .

Merci

+0

@daniellb ça a marché pour vous? – Nitin

0

Supprimer x:Key de DataTemplate et essayez ceci:

<ContentControl Name="CustomerContentControl"> 
    <local:Customer /> 
</ContentControl> 

<ContentControl Name="PersonContentControl"> 
    <local:Person /> 
</ContentControl> 

Dans cet article, Josh Smith montrent, comment obtenir accès aux éléments qui sont DataTemplate:

How to use FindName with a ContentControl

Questions connexes