【发布时间】:2018-12-06 19:36:08
【问题描述】:
首先,我找到了这个答案,最初认为它解决了我的问题:Binding to TabControl SelectedIndex
该帖子中标签页眉的屏幕截图显示了我在标签页中看到的内容。
特别是,在更新属性和引发 PropertyChanged 通知之前添加检查 if(value != _SelectedTabIndex) 似乎有效。我的意思是,它使我第一个添加的选项卡正确显示(也选择了标题)。
但是,这仅适用于添加到 TabControl 的第一个项目。当我添加第二个项目时,第一个或第二个标题都没有被选中,但是第二个项目在选项卡的正文中是可见的,这意味着它可以工作。
这是我的 XAML:
<TabControl Grid.Row="1" Grid.Column="2" ItemsSource="{Binding TabViewModels}"
SelectedIndex="{Binding SelectedTabIndex, Mode=OneWay}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding TabName}" />
<Setter Property="Content" Value="{Binding}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
这是我的 CollectionChanged 处理程序:
private void OnTabCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// Set selected index to last index in collection
SelectedTabIndex = TabViewModels.Count - 1;
}
这是我的财产:
private int _SelectedTabIndex;
public int SelectedTabIndex
{
get { return _SelectedTabIndex; }
set
{
if(value != _SelectedTabIndex)
{
_SelectedTabIndex = value;
OnPropertyChanged();
}
}
}
【问题讨论】:
标签: c# wpf mvvm binding tabcontrol