반응형
WPF ListView의 헤더를 숨기려면 어떻게 해야 합니까?
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>
스타일을 다음과 같이 정의합니다.
<Window.Resources>
....
<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</Window.Resources>
이렇게 바르세요.
<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
....
</GridView>
또한 다음과 같이 입력할 수 있습니다.Style
인라인 방식(아래 개선 사항 참조):
<ListView>
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<!-- ... -->
</GridView>
</ListView.View>
</ListView>
이렇게 하면 스타일이 원하는 컨트롤에만 적용됩니다(즉, XAML 범위 내에 있을 수 있는 추가 컨트롤에 의도치 않게 영향을 주지 않음).
[edit: 2022] 더 나은 해결책(이 페이지의 다른 곳에서는 언급되지 않음)은 헤더를 축소하는 것이 아니라 완전히 비활성화하는 것입니다.헤더를 "붕괴"(표시)할 계획이 없는 경우 WPF 레이아웃 엔진이 헤더를 고려해야 할 이유가 전혀 없습니다.
<ListView>
<ListView.Resources>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Template" Value="{x:Null}" /> <!-- way better. -->
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<!-- ... -->
</GridView>
</ListView.View>
</ListView>
위와 다른 점은 컨트롤을 설정하는 것입니다.Template
하위 범위의GridViewColumnHeader
의 예.{x:Null}
이를 통해 WPF는 결코 렌더링되지 않을 헤더 인스턴스에 대한 준비를 피할 수 있습니다.
Ray의 솔루션을 적용할 수 있는 또 다른 방법은 다음과 같습니다.
<ListView>
<ListView.View>
<GridView>
<GridView.ColumnHeaderContainerStyle>
<Style TargetType="GridViewColumnHeader">
<Setter Property="Visibility" Value="Collapsed" />
</Style>
</GridView.ColumnHeaderContainerStyle>
</GridView>
</ListView.View>
</ListView>
솔루션은 자동으로 적용되는 리소스를 생성하는 대신 스타일 속성을 직접 설정합니다.그게 더 낫다는 말이 아니라 다른 방법일 뿐...
언급URL : https://stackoverflow.com/questions/632519/how-can-i-hide-the-header-of-a-wpf-listview
반응형
'source' 카테고리의 다른 글
WPF의 양호한 수치 UpDown 등가물? (0) | 2023.04.27 |
---|---|
PUT의 Azure BLOB 스토리지 문서에서 "404 리소스를 찾을 수 없음" (0) | 2023.04.27 |
Local cloud stack for Azure similar to LocalStack for AWS? (0) | 2023.04.27 |
VBA를 사용하여 다른 시트에서 값 가져오기 (0) | 2023.04.27 |
내 앱이 아이폰 시뮬레이터에서 실행 중인지 프로그래밍 방식으로 확인하려면 어떻게 해야 합니까? (0) | 2023.04.27 |