2009-03-10 14 views
62

Chcę móc ukryć nagłówek u góry każdej kolumny siatki w widoku listy WPF.Jak ukryć nagłówek WPF widoku listy?

Jest to XAML dla mojego 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> 

Dane jestem wiązanie to jest:

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

Odpowiedz

113

zdefiniować styl jak tak

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

Stosuje się go jak więc

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

Czy nie powinno to być FrameworkElement.Visibility, przynajmniej w WPF 3.5? (Wiem, że to stary temat, ale jest na szczycie w Google, więc jest przydatny dla wielu osób). –

+1

To nie musi być. Podałeś typ celu, więc nie musisz określać, gdzie znajduje się właściwość. – Ray

+0

Doskonały post ... zaoszczędził mi kupę czasu i pracował na poczcie .. dzięki – Kev

39

Dzięki za to rozwiązanie. Można również umieścić Style inline tak:

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

(także oznaczenie {x:Type} użyłeś nie wydaje się być konieczne)

+0

Chociaż obie odpowiedzi są poprawne, jest to najbardziej preferowane. Dziękuję Ci. –

9

inny sposób można zastosować rozwiązanie Ray jest tak:

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

Rozwiązanie ustawia właściwość stylu bezpośrednio, zamiast tworzenia zasobu, który jest automatycznie stosowany. Nie mówiąc, że to jest lepsze, po prostu w inny sposób ...