Скрыть вкладки заголовков в WPF TabControl Каков наилучший способ скрыть заголовки Tab, когда есть только одна заметная вкладка? Я хочу полностью скрыть элемент управления TabControl, оставив содержимое вкладки видимым. Ответ 1 Вы можете использовать стиль, примененный к TabItem, с DataTrigger, который скроет его, если родительский TabControl имеет только один элемент: <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid.Resources> <x:Array x:Key="tabData" Type="{x:Type sys:String}"> <sys:String>do</sys:String> <sys:String>re</sys:String> <sys:String>mi</sys:String> </x:Array> </Grid.Resources> <TabControl ItemsSource="{StaticResource tabData}"> <TabControl.ItemContainerStyle> <Style TargetType="{x:Type TabItem}"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabControl}}, Path=Items.Count}" Value="1"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </TabControl.ItemContainerStyle> </TabControl> </Grid> Если вы хотите полностью избавиться от TabControl, если есть только один элемент, эта логика должна, вероятно, находиться на более высоком уровне. Ответ 2 И если вы должны сделать это в коде позади.... foreach (var item in tabControl.Items) (item as TabItem).Visibility = tabControl.Items.Count > 1 ? Visibility.Visible : Visibility.Collapsed;
Ответ 1 Вы можете использовать стиль, примененный к TabItem, с DataTrigger, который скроет его, если родительский TabControl имеет только один элемент: <Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid.Resources> <x:Array x:Key="tabData" Type="{x:Type sys:String}"> <sys:String>do</sys:String> <sys:String>re</sys:String> <sys:String>mi</sys:String> </x:Array> </Grid.Resources> <TabControl ItemsSource="{StaticResource tabData}"> <TabControl.ItemContainerStyle> <Style TargetType="{x:Type TabItem}"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TabControl}}, Path=Items.Count}" Value="1"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </TabControl.ItemContainerStyle> </TabControl> </Grid> Если вы хотите полностью избавиться от TabControl, если есть только один элемент, эта логика должна, вероятно, находиться на более высоком уровне.
Ответ 2 И если вы должны сделать это в коде позади.... foreach (var item in tabControl.Items) (item as TabItem).Visibility = tabControl.Items.Count > 1 ? Visibility.Visible : Visibility.Collapsed;