2011-05-24 30 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

相關問題