我有一个制表符控件,其中的项目源我将数据绑定到一个可观察的集合。我使用数据模板来定义选项卡标题和内容的可视化表示。
当我将项目添加到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();
}
答案 0 :(得分:4)
如果您在TabControl上设置SelectedIndex="0"
,它将解决此问题。我相信这与添加/删除项目时强制SelectedIndex的错误有关。