source

WPF 탭 컨트롤에서 탭 헤더 숨기기

manysource 2023. 5. 10. 22:05

WPF 탭 컨트롤에서 탭 헤더 숨기기

표시되는 탭이 하나뿐일 때 탭 헤더를 숨기는 가장 좋은 방법은 무엇입니까?

TabControl chrome은 완전히 숨기면서 Tab의 내용은 표시합니다.

상위 TabControl에 다음 항목이 하나만 있는 경우 접히는 DataTrigger와 함께 TabItem에 적용된 스타일을 사용할 수 있습니다.

<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을 완전히 제거하려면 해당 논리가 더 높은 수준에 있어야 합니다.

그리고 만약 당신이 비밀번호로 해야 한다면...

foreach (var item in tabControl.Items)
            (item as TabItem).Visibility = tabControl.Items.Count > 1 ? Visibility.Visible : Visibility.Collapsed;

언급URL : https://stackoverflow.com/questions/387480/hide-tab-headers-in-wpf-tabcontrol