2009-03-10 18 views
62

Quiero ser capaz de ocultar el encabezado en la parte superior de cada columna de la grilla en un WPF ListView.¿Cómo puedo ocultar el encabezado de una lista WPF?

Este es el XAML para mi ListView:

<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> 

Los datos que estoy vinculante que esto es:

<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> 

Respuesta

113

definir un estilo al igual que

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

aplicarlo como entonces

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

¿No debería ser esto FrameworkElement.Visibility, al menos en WPF 3.5? (Sé que este es un tema antiguo, pero está en la parte superior de Google, por lo que es útil para mucha gente) –

+1

No es necesario. Ha especificado el tipo de destino, por lo que no necesita especificar dónde está la propiedad. – Ray

+0

Excelente publicación ... me salvó un montón de tiempo y trabajó un obsequio ... gracias – Kev

39

Gracias por esta solución. También se puede poner la línea Style así:

(Además, no parece la notación {x:Type} que solía ser necesario)
<ListView> 
    <ListView.Resources> 
     <Style TargetType="GridViewColumnHeader"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
     </Style> 
    </ListView.Resources> 
    <ListView.View> 
     <GridView> 
      <!-- ... --> 
     </GridView> 
    </ListView.View> 
</ListView> 

+0

Aunque ambas respuestas son correctas, esta es la más preferida. gracias. –

9

Otra manera de aplicar la solución de Ray es así:

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

La solución establece directamente la propiedad de estilo en lugar de crear un recurso que se aplica automáticamente. No digo que sea mejor, solo otra forma ...

Cuestiones relacionadas