Anche se questa domanda è piuttosto vecchio e ben ho già risposto, pensavo di aggiungere questa risposta aggiuntiva per dimostrare un modo alternativo di modificare il TabItem
selezionato in un TabControl
. Se si dispone di un modello di visualizzazione per ogni TabItem
, può essere utile avere una proprietà IsSelected
al suo interno per determinare se è selezionata o meno. E 'possibile i dati legano questa proprietà IsSelected
con la proprietà TabItem.IsSelected
utilizzando la proprietà ItemContainerStyle
:
<TabControl ItemsSource="{Binding MenuItems}" TabStripPlacement="Top">
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type ControlViewModels:MenuItemViewModel}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImageSource}" Margin="0,0,10,0" />
<TextBlock Text="{Binding HeaderText}" FontSize="16" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="{x:Type ControlViewModels:MenuItemViewModel}">
<ContentControl Content="{Binding ViewModel}" />
</DataTemplate>
</TabControl.ContentTemplate>
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
È ora possibile modificare la TabItem
selezionato dalla vista del modello genitore come questo:
MenuItems[0].IsSelected = true;
Nota che a causa questa proprietà è dati associati alla proprietà TabItem.IsSelected
, chiamando questo ...:
MenuItems[1].IsSelected = true;
... imporrà inoltre automaticamente la proprietà MenuItems[0].IsSelected
su false
. quindi se il modello di vista con cui si sta lavorando ha la proprietà IsSelected
impostata su true, allora si può essere sicuri che la relativa vista sia selezionata in TabControl
.
Si prega di non chiamare una 'finestra 'WPF una" forma ". Questo è un insulto. –
lol @HighCore - Ho letteralmente detto la stessa identica cosa a un collega qualche giorno fa ... – JerKimball
Per favore guarda [questo] (http://stackoverflow.com/questions/15209870/dynamically-updating-tabcontrol-content- at-runtime/15210593 # 15210593) spiegazione di cosa sia 'TabControl' e come dovrebbe essere trattato, da un punto di vista MVVM. –