Я понимаю, что на это уже давно ответили, однако лучшим решением было бы связать ваши элементы с коллекцией в вашей модели и показать свойство, с которым связан выбранный элемент.
XAML:
<!-- MyTemplateForItem represents your template -->
<TabControl ItemsSource="{Binding MyCollectionOfItems}"
SelectedItem="{Binding SelectedItem}"
ContentTemplate="{StaticResource MyTemplateForItem}">
</TabControl>
Код сзади:
public ObservableCollection<MyItem> MyCollectionOfItems {
get;
private set;
}
private MyItem selectedItem;
public MyItem SelectedItem{
get { return selectedItem; }
set {
if (!Object.Equals(selectedItem, value)) {
selectedItem = value;
// Ensure you implement System.ComponentModel.INotifyPropertyChanged
OnNotifyPropertyChanged("SelectedItem");
}
}
}
Теперь все, что вам нужно сделать, чтобы установить элемент:
MyItem = someItemToSelect;
Вы можете использовать ту же логику со свойством SelectedIndex
, далее вы можете использовать их одновременно.
Этот подход позволяет вам правильно отделить вашу модель от пользовательского интерфейса, что может позволить вам заменить TabControl
чем-то другим, но не требует изменения базовой модели.