Да, вы можете сделать это, привязав свойство SelectedTabIndex на вкладке Control к строке в ViewModel. (Так что все дело в том, как вы проектируете структуры данных в ViewModel.)
Относительно загрузки содержимого вкладки при выборе вкладки:
Изначально вы можете вызвать сервис из вашей ViewModel и получить количество вкладок, заполнить его коллекцией Observable и привязать ваши вкладки к коллекции. Вы можете иметь свойство SelectedTab в вашей ViewModel и иметь его значение -1. Теперь, после того как вы получили количество вкладок и привязали их к элементу управления вкладками (я не загружаю содержимое вкладки; только вкладки для отображения), вы можете установить SelectedTab = 0 и в установщике вы можете передать TabId и загрузить данные для Таб.
private string selectedTab = -1;
public string SelectedTab
{
get { return selectedTab; }
set {
selectedTab = value;
LoadTabContent(selectedTab);
OnPropertyChanged("SelectedTab"); // I have implemented INotifyPropertyChanged event
}
}
Но убедитесь, что у вас не слишком много вкладок, потому что приложение будет работать очень плохо со слишком большим количеством вкладок и большим количеством данных внутри каждой вкладки, потому что каждый раз, когда вы выбираете другую вкладку, WPF удаляет содержимое старой вкладки из визуального дерева .