2010-11-05 137 views
1

我有一个项目列表,其中每个项目都包含从用户控件继承的类型的显示属性。这个想法是每个继承类可以自己决定为用户显示什么。该项目被自己安排在一个DataTemplate的标签控制......像......WPF绑定到UserControl属性

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

而在FOO的ObservableCollection样子类...

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

我可以”不知道是如何添加显示属性的地方???在XAML中。有没有办法做到这一点(试图避免从代码背后)?

回答

2

你需要做的是使用的TabControlItemContainerStyle属性:

<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>