2010-11-05 9 views
1

J'ai une liste d'éléments, chacun contenant une propriété d'affichage d'un type héritant d'un contrôle utilisateur. L'idée est que chaque classe héritière peut décider elle-même ce qu'elle veut afficher pour l'utilisateur. Les éléments sont eux-mêmes disposés dans un DataTemplate pour un contrôle onglet ... quelque chose comme ...Liaison WPF à une propriété UserControl

 <TabControl ItemsSource="{Binding FooList}"> 
      <TabControl.ItemTemplate> 
       <DataTemplate> 
        <TabItem Header="{Binding Name}"> 
         ??? 
        </TabItem> 
       </DataTemplate> 
      </TabControl.ItemTemplate> 
     </TabControl> 

Et les classes du look foo ObservableCollection comme ...

public class IFoo 
    { 
     public String Name { get; set; } 
     public UserControl Display { get; set; } 
     ... 
    } 

Qu'est-ce que je peux » t comprendre est comment ajouter la propriété d'affichage où le ??? est dans le XAML. Y at-il un moyen de le faire (en essayant d'éviter de le faire à partir du code derrière)?

Répondre

2

Ce que vous devez faire est d'utiliser la propriété ItemContainerStyle de TabControl:

<TabControl ItemsSource="{Binding FooList}"> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="{x:Type TabItem}"> 
      <Setter Property="Header" Value="{Binding Name}" /> 
      <Setter Property="Content" Value="{Binding Display}" /> 
     </Style> 
    </TabControl.ItemContainerStyle> 
</TabControl> 
Questions connexes