【问题标题】:Custom TabItem in TabControlTabControl 中的自定义 TabItem
【发布时间】:2010-04-17 21:53:32
【问题描述】:

我创建了继承自 TabItem 的 CustomTabItem,我想在 TabControl 中绑定 ObservableCollection 时使用它

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

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

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

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

并遍历我的输入 ObservableCollection,根据集合中的项目创建我的 CustomTab 并将其添加到 resultList...

我想避免它,因为在创建 CustomTabItem 时我正在创建复杂的视图,这需要一段时间,所以我不想总是在绑定集合中发生变化时创建它。

我的类扩展了典型的 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 的样式,所以我仍然会丢失我在自定义类中添加的属性。

【问题讨论】:

    标签: wpf xaml tabcontrol tabitem


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-26
      • 2018-04-21
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      • 2011-02-14
      相关资源
      最近更新 更多