Ho un TabControl
su un UserControl
supportato da un ViewModel e lo Visibility
di uno degli elementi della scheda è associato a una proprietà sul ViewModel.WPF TabControl: selezionare una scheda diversa quando TabItem Visibility cambia
<TabControl x:Name="myTabControl">
<TabItem Header="Tab 1" />
<TabItem Header="Tab 2" Visibility="{Binding HasData, Converter={StaticResource boolToVisibilityConverter}}"/>
</TabControl>
Quando il Visibility
dei TabItem
cambiamenti, collassa (pelli) nell'intestazione TabItem
, ma continua mostrando il suo contenuto.
Voglio il TabControl
a passare alla scheda visibile quando l'altra scheda è nascosta ed è stato un po 'sorpreso di scoprire che non si verifica automaticamente.
Allegare un gestore di eventi per l'SelectionChanged
caso di TabControl
dimostra che TabItem.IsSelected
(e TabControl.SelectedItem
) non è nemmeno influenzato quando il TabItem.Visibility
modifiche (è questo un bug ?!).
Ho provato sia un trigger proprietà:
<!-- This doesn't compile because of TargetName on the Setter, think you can only use it in Control Templates.
I don't know how to refer to the parent TabControl from within the TabItem style. -->
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Collapsed">
<Setter TargetName="myTabControl" Property="SelectedIndex" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
</TabControl.ItemContainerStyle>
e un dato innescare:
<!-- This doesn't quite work, it affects the Visibility of the TabItem's content too -->
<TabControl.Style>
<Style TargetType="{x:Type TabControl}" BasedOn="{StaticResource {x:Type TabControl}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem.Visibility, ElementName=tabControl}"
Value="Collapsed">
<Setter Property="SelectedIndex" Value="0" />
</DataTrigger>
</Style.Triggers>
</Style>
</TabControl.Style>
non riesco a ottenere il trigger per lavorare, e non c'è VisibilityChanged
evento che posso gestire, quindi sono un po 'bloccato e apprezzerei un po' di aiuto.
Ah, che farà! (+1) Non so perché non l'ho notato prima - suppongo che MSDN debba aver filtrato le proprietà ereditate al momento. Ho intenzione di non segnare questa è la risposta solo per vedere se qualcuno ha un suggerimento non code-behind, ma grazie mille. – Riko