WPF ListView의 헤더를 숨기려면 어떻게해야합니까?


85

WPF ListView의 각 그리드 열 상단에있는 헤더를 숨길 수 있기를 원합니다.

이것은 내 ListView의 XAML입니다.

   <Window x:Class="ListViewTest.Test0.ListViewTest"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   Title="Empty ListView Grid" Height="216" Width="435" FlowDirection="LeftToRight" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.IsSharedSizeScope="False">
    <Window.Resources>
        <XmlDataProvider x:Key="CustomersDS" Source="C:\data.xml"/>
    </Window.Resources>


    <ListView Margin="0,0,0,50" ItemTemplate="{DynamicResource CustomerTemplate}" ItemsSource="{Binding Source={StaticResource CustomersDS}, XPath=/Customers/Customer}">
        <ListView.View>
            <GridView>
                <GridViewColumn  DisplayMemberBinding="{Binding XPath=Code}"/>
                <GridViewColumn  DisplayMemberBinding="{Binding XPath=Name}"/>
                <GridViewColumn  DisplayMemberBinding="{Binding XPath=Country}"/>
            </GridView>
        </ListView.View>
    </ListView>


</Window>

이것을 바인딩하는 데이터는 다음과 같습니다.

 <Customers>
  <Customer>
 <Code>1234</Code>
 <Name>EPI</Name>
 <Country>Sesame Street</Country>
  </Customer>
  <Customer>
 <Code>3234</Code>
 <Name>Paul</Name>
 <Country>United Kingdom</Country>
  </Customer>
 <Customer>
 <Code>3344</Code>
 <Name>Juan</Name>
 <Country>Spain</Country>
  </Customer>
 <Customer>
 <Code>4321</Code>
 <Name>Dodo</Name>
 <Country>Mars</Country>
  </Customer>
</Customers>

답변:


139

이렇게 스타일을 정의

<Window.Resources>
    ....
    <Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
        <Setter Property="Visibility" Value="Collapsed" />
    </Style>
</Window.Resources>

이렇게 바르세요

<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
    ....
</GridView>

2
최소한 WPF 3.5에서는 FrameworkElement.Visibility가 아니어야합니까? (나는이 오래된 주제 알고 있지만, 유용, 그래서 그것은 많은 사람들을 위해, 구글의 상단이다)
로이 T.

1
그럴 필요가 없습니다. 대상 유형을 지정 했으므로 속성의 위치를 ​​지정할 필요가 없습니다.
Ray

훌륭한 포스트 ... 저에게 많은 시간을 절약하고 치료를 .. 감사합니다
Kev

재사용이 중요하지 않은 경우 GridView에서도 인라인으로 수행 할 수 있습니다.<GridView><GridView.ColumnHeaderContainerStyle><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="Visibility" Value="Collapsed" /></Style></GridView.ColumnHeaderContainerStyle></GridView>
HotN

55

이 솔루션에 감사드립니다. 다음 Style과 같이 인라인을 넣을 수도 있습니다 .

<ListView>
    <ListView.Resources>
        <Style TargetType="GridViewColumnHeader">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <!-- ... -->
        </GridView>
    </ListView.View>
</ListView>

(또한 {x:Type}사용한 표기법이 필요하지 않은 것 같습니다)


두 답변 모두 정확하지만 이것이 가장 선호됩니다. 감사합니다.
New Bee

20

Ray의 솔루션을 적용 할 수있는 또 다른 방법은 다음과 같습니다.

<ListView>
    <ListView.View>
        <GridView>
            <GridView.ColumnHeaderContainerStyle>
                <Style TargetType="GridViewColumnHeader">
                    <Setter Property="Visibility" Value="Collapsed" />
                </Style>
            </GridView.ColumnHeaderContainerStyle>
        </GridView>
    </ListView.View>
</ListView>

솔루션은 자동으로 적용되는 리소스를 생성하지 않고 스타일 속성을 직접 설정합니다. 더 낫다는 말이 아니라 다른 방법으로 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.