自定义的TabItem TabControl的中

自定义的TabItem TabControl的中

问题描述:

我创建CustomTabItem从TabItem的继承,我想使用它,而在TabControl的自定义的TabItem TabControl的中

<TabControl ItemsSource="{Binding MyObservableCollection}"/> 

结合的ObservableCollection应该像这样的XAML,但我不知道怎么改TabControl在绑定时创建的输出项的默认类型。

我试图创建转换器,但它必须做这样的事情里面convertin方法:

List<CustomTabItem> resultList = new List<CustomTabItem>(); 

通过我投入的ObservableCollection迭代的基础上,从集合项目创建我CustomTab并将其添加到resultList ...

我想避免它,创建CustomTabItem的时候会出现问题我创建复杂的View需要一段时间,所以我不想在绑定的集合中发生变化时总是创建它。

我的类扩展了典型的TabItem,我想在TabControl中使用这个类而不是TabItem。

 <TabControl.ItemContainerStyle> 
      <Style TargetType="{x:Type local:CustomTabItem}"> 
       <Setter Property="MyProperty" Value="{Binding xxx}"/> 
      </Style> 
     </TabControl.ItemContainerStyle> 

上面的代码产生错误,Style不能应用于TabItem。

我的主要目的是在XAML用我自己的CustomTabItem和绑定属性...就像上面......

我还试图用

<TabControl.ItemTemplate/> 
<TabControl.ContentTemaplte/> 

但他们只是风格对于TabItem,所以我仍然会缺少我的属性,我在我的自定义类中添加了它。

您需要创建一个从TabControl的派生的自定义类并覆盖GetItemForContainerOverride来回报您的自定义的TabItem:

protected override DependencyObject GetContainerForItemOverride() 
{ 
    return new CustomTabItem(); 
}