2011-05-24 100 views
3

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

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

我用.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(); 
} 

回答

4

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

+0

甜,感谢您的简单解决方法。 – 2011-05-24 18:14:11

相关问题