Сначала я нашел этот ответ и сначала подумал, что он решил мою проблему: Привязка к TabControl SelectedIndex
На скриншотах заголовка вкладки в этом посте показано, что я вижу смои вкладки.
В частности, добавление проверки if (value! = _SelectedTabIndex) перед обновлением свойства и поднятие уведомления PropertyChanged, похоже, работало.Под этим я имею в виду, что моя первая добавленная вкладка отображалась правильно (с выбранным заголовком).
Однако это работает только для первого элемента, добавленного в 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();
}
}
}