0

我在TabControl. 幸运的是,我在这篇 CodeProject 文章中找到了一些我认为可以解决我所有问题的东西。

但是,此解决方案引入了一个问题,那就是它破坏了我的HeaderTemplate. 选项卡标题与内容控件具有相同的内容。

我的视图使用这样的 TabControl:

<TabControl
        behaviors:TabItemGeneratorBehavior.ItemsSource="{Binding MyItems, Mode=OneWay}"
        behaviors:TabItemGeneratorBehavior.SelectedItem="{Binding MySelectedItem, Mode=TwoWay}">

    <TabControl.Resources>
        <Style TargetType="TabItem">
            <Setter Property="HeaderTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <ContentPresenter>
                            <ContentPresenter.Content>
                                <TextBlock Text="{Binding Title}"/>
                            </ContentPresenter.Content>
                        </ContentPresenter>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TabControl.Resources>
</TabControl>

来自behaviors:TabItemGeneratorBehaviorCodeProject 文章。里面TabItemGeneratorBehavior是一个生成的方法TabItems

private void AddTabItem(object item)
{
    var contentControl = new ContentControl();
    var tab = new TabItem
        {
            DataContext = item,
            Content = contentControl,
            HeaderTemplate = _tabControl.ItemTemplate
        };

    contentControl.SetBinding(ContentControl.ContentProperty, new Binding());
    tab.SetBinding(HeaderedContentControl.HeaderProperty, new Binding());

    _tabControl.Items.Add(tab);
}

我认为我的问题在于为HeaderProperty. 如何设置绑定以使其使用HeaderTemplate上面 XAML 中定义的内容?

4

1 回答 1

0

在这里。

解决方案是在创建时删除HeaderTemplate分配TabItem

var tab = new TabItem
    {
        DataContext = item,
        Content = contentControl,
        // HeaderTemplate = _tabControl.ItemTemplate
    };
于 2014-05-09T06:12:48.973 回答