在ItemsControl中使用TabItem

时间:2014-10-31 06:07:13

标签: wpf xaml tabcontrol itemscontrol

我正在尝试创建一个TabControl,它接受一个列表并为该列表中的每个元素创建一个TabItem。我想制作一个ItemsControl,然后将面板设置为TabControl会这样做,但它似乎不起作用。反正有没有让这项工作?

1 个答案:

答案 0 :(得分:9)

不需要ItemsControl。相反,TabControl具有ItemsSource属性。例如,您可以将其设置为IEnumerable<string>,并为可枚举项中的每个项创建一个TabItem。

例如,在XAML中:

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

当Items设置为List<string> { "a", "b", "c" }时,会生成: enter image description here

但是,我假设您的主要目标不仅仅是为任何给定的可枚举项中的每个项创建一个空TabItem,因此为了实际填充每个TabItem,您将需要使用TabControl的ContentTemplate属性:

<TabControl ItemsSource="{Binding Items}">
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock VerticalAlignment="Top" Text="{Binding YourText}"></TextBlock>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

请注意,ContentTemplate属性从ItemsSource中的任何给定项目获取其DataContext,因此在您自己创建的ItemsSource对象中创建项目会更加容易,您可以在其中将YourText作为属性。我已经使用YourText属性创建了自己的TestClass,并将Items属性更改为包含两个TestClasses的IEnumerable。 (第一个是YourText =“第一个标签”,第二个是YourText =“第二个标签”。)这就是TabControl现在的样子,其中ItemsSource设置为IEnumerable和ItemsControl.ContentTemplate:

enter image description here

这几乎是你可以获得的一个基本示例,但是你可以扩展ControlTemplate,但是大多数(如果不是所有)控件都可以在那里以相同的方式使用,你通常将它们放在一个窗口中或TabItem。

如果要更改标题,因此它不会显示您的类型名称,请使用TabControl.ItemTemplate属性,方法与上面使用的ControlTemplate类似。

如果您想了解更多信息,kennyzx提供了以下链接:http://tech.pro/tutorial/1028/wpf-tutorial-binding-to-a-tabcontrol

Panjak Nikam提供了这个:http://tech.pro/tutorial/1028/wpf-tutorial-binding-to-a-tabcontrol