使用数据绑定时,TabControl无法创建第一个选项卡

时间:2011-05-24 16:49:20

标签: wpf datatemplate tabcontrol

我有一个制表符控件,其中的项目源我将数据绑定到一个可观察的集合。我使用数据模板来定义选项卡标题和内容的可视化表示。

当我将项目添加到observable集合时,我得到一个标题页但没有内容。当我向observable集合中添加第二个项目时,我得到两个项目的标题标题和内容。因此,首先将第二个项目添加到observable集合时,将创建第一个选项卡的内容。任何人都知道这是一个错误还是可以解释为什么会发生?有解决方法吗?我尝试使用模板选择器,结果相同。下面是重现的示例代码。

我使用.NET 3.5和4.0进行了测试。

XAML:

<Window x:Class="TabDemo.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300">

    <StackPanel>
        <Button Content="Add new tabitem" Click="OnAdd" />

        <TabControl 
            ItemsSource="{Binding Path=Items}">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" />
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}" />
                </DataTemplate>
            </TabControl.ContentTemplate>
        </TabControl>
    </StackPanel>

</Window>

代码背后:

public partial class Window1
{
    public Window1()
    {
        InitializeComponent();

        Items = new ObservableCollection<int>(); 
        DataContext = this;
    }

    public ObservableCollection<int> Items { get; set; }

    private void OnAdd(object sender, RoutedEventArgs e)
    {
        Items.Add(_random.Next(100));
    }

    private readonly Random _random = new Random();
}

1 个答案:

答案 0 :(得分:4)

如果您在TabControl上设置SelectedIndex="0",它将解决此问题。我相信这与添加/删除项目时强制SelectedIndex的错误有关。

相关问题