2009-03-10 6 views
62

Ich möchte in der Lage sein, die Kopfzeile am Anfang jeder Rasterspalte in einer WPF-ListView ausblenden. Wie kann ich die Kopfzeile einer WPF-Listview ausblenden?

Dies ist das XAML für meine 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> 

Die Daten ich dies Bindung an ist:

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

Antwort

113

Definieren Sie einen Stil wie so

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

Wenden Sie es wie so

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

Sollte dies nicht FrameworkElement.Visibility zumindest in WPF 3.5 sein? (Ich weiß, das ist ein altes Thema, aber es ist an der Spitze bei Google, so dass es für viele Leute nützlich ist) –

+1

Es muss nicht sein. Sie haben den Zieltyp angegeben, sodass Sie nicht angeben müssen, wo sich die Eigenschaft befindet. – Ray

+0

Ausgezeichnete Post ... ersparte mir einen Haufen Zeit und arbeitete ein Vergnügen .. danke – Kev

39

Danke für diese Lösung. Sie können auch wie so die Style inline setzen:

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

(Auch die {x:Type} Notation nicht benötigt verwendet zu werden scheint)

+0

Obwohl beide Antworten richtig sind, ist dies am meisten bevorzugt. Danke. –

9

Eine weitere Möglichkeit, Ray-Lösung anwenden können, ist wie folgt:

Die Lösung legt die style -Eigenschaft direkt fest, anstatt eine Ressource zu erstellen, die automatisch angewendet wird. Nicht sagen, es ist besser, nur ein anderer Weg ...

Verwandte Themen