xaml - 在TabControl中,wpf自定义 TabItem

  显示原文与译文双语对照的内容
142 1

创建了从TabItem继承的CustomTabItem,并且我希望在TabControl中绑定ObservableCollection时使用它

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

控件应该在XAML中类似,但我不知道如何更改TabControl在绑定时创建的输出项的默认类型。

我尝试创建转换器,但它必须在convertin方法中执行类似这样的操作:

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

并循环访问我的输入,根据从集合中的项创建我的CustomTab并将它的添加到 resultlist 。"。

我想避免它,因为创建CustomTabItem时我创建复杂视图,所以我不想在绑定集合时总是创建它。

此类扩展典型的TabItem,而我希望在TabControl中使用此类而不是 TabItem 。

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

上代码生成的错误无法应用于 TabItem 。

我的主要用途是在XAML中使用我自己的CustomTabItem和绑定属性。就像上面那样。

我也试着用

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

但它们只是TabItem的样式,所以我在自定义类中添加了我的属性 wchich 。

时间:原作者:0个回答

117 4

要创建自定义的TabItem,你需要创建一个从TabControl派生的自定义类并重写 GetItemForContainerOverride:

protected override DependencyObject GetContainerForItemOverride()
{
 return new CustomTabItem();
}
原作者:
...