【问题标题】:ItemTemplate - works wrong. Custom apperance and bindingItemTemplate - 工作错误。自定义外观和装订
【发布时间】:2012-01-22 01:34:32
【问题描述】:

我创建了自己的 ExtendedTabControl 来完全改变它的外观。它工作正常。我还创建了 CloseableTabItem 控件。它也有效。但是......到目前为止,我已经通过这种方式手动将 CloseableTabItem 放入了我的 ExtendedTabControl:

<etc:ExtendedTabControl>            
    <etc:CloseableTabItem Header="First Item">
        <...some  content... />
    </etc:CloseableTabItem>            
</etc:ExtendedTabControl> 

现在我想将 ObservableCollection 绑定到我的 ExtendedTabControl。 Collection 内的对象包含:header 和 contentText。我设置了ItemSource,好的,工作。但是我怎样才能让 TabItems 成为我的 CloseableTabItems?更重要的是,如何将我的类对象绑定到该 CloseableTabItems?我注意到 TabControl 有一个名为 ItemTemplate 的属性,但设置它并不会完全改变它的外观。还有一个我无法改变的背景。因此,外观起作用,但绑定不起作用,或者绑定起作用,但外观只是部分起作用。我能做些什么?请帮忙。

【问题讨论】:

    标签: wpf data-binding custom-controls tabcontrol


    【解决方案1】:

    在您的ExtendedTabControl 代码中,您需要将为项目生成的项目容器更改为您的ClosableTabItem

    public class ExtendedTabControl : TabControl
    {
        protected override DependencyObject GetContainerForItemOverride()
        {
            return new CloseableTabItem();
        }
    }
    

    (有一个相关的方法,IsItemItsOwnContainerOverride,您可能还想覆盖它)

    TabControls 有两个模板可以设置,ContentTemplate 模板项目内容区域,ItemTemplate 模板标题。

    要修改生成的选项卡上的其他属性,请使用 ItemContainerStyle,它现在有一个 TargetTypeClosableTabItem

    【讨论】:

    • 非常感谢。还有两件事......现在当用户点击关闭按钮(在 CloseableTabItem 上)时,我需要从 ObservableCollection 中删除它的类对象,它是一个 ItemsSource。如何通过 CloseableTabItem 中引发的事件来获取它?还有一个类似的问题。 ExtendedTabControl 有一个添加新选项卡的按钮。我只是将新的类对象添加到集合中,但是如何选择它的 CloseableTabItem?
    • @joni55:在您创建选项卡项目的覆盖事件中,您已经可以订阅关闭事件,并且您可以在 ExtendedTabControl 中访问项目源。要选择选项卡,请将 ExtendedTabControl.SelectedItem 设置为您刚刚添加的对象...
    • 再一次谢谢你。自动选择完成。关于第一个问题的最后一件事:设置 ItemTemplate 不起作用。我设置为 ItemTemplate 的内容未显示在 CloseableTabItem 中。在我的逻辑中,CloseableTabItem 应该包含诸如 ContentPresenter 之类的东西(但不是 ContentPresenter,因为它是关于内容的),其中显示了我在 ItemTemplate 中设置的东西。我希望你知道我的意思。我应该在 CloseableTabItem 中添加什么?
    • @joni55:查看TabItemsdefault template,它应该让您了解如何正确绑定。
    猜你喜欢
    • 2019-02-19
    • 2016-01-14
    • 2021-04-01
    • 2010-10-19
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多