Bir WPF ListView başlığını nasıl gizleyebilirim?


86

WPF ListView'de her ızgara sütununun üstündeki başlığı gizleyebilmek istiyorum.

Bu, ListView'ım için XAML'dir:

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

Bunu bağladığım veriler:

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

Yanıtlar:


140

Böyle bir Tarz tanımlayın

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

Öyle uygulayın

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

2
Bunun FrameworkElement.Visibility olması gerekmez mi, en azından WPF 3.5'te? (Bunun eski bir konu olduğunu biliyorum, ancak Google'da en üstte olduğu için birçok insan için yararlıdır)
Roy T.

1
Olmasına gerek yok. Hedef türünü belirttiniz, bu nedenle mülkün nerede olduğunu belirtmenize gerek yok.
Ray

Mükemmel gönderi ... bana bir yığın zaman kazandırdı ve çok çalıştı .. teşekkürler
Kev

Yeniden kullanım bir faktör değilse, bu da GridView'da satır içi olarak yapılabilir:<GridView><GridView.ColumnHeaderContainerStyle><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="Visibility" Value="Collapsed" /></Style></GridView.ColumnHeaderContainerStyle></GridView>
HotN

55

Bu çözüm için teşekkürler. Ayrıca koyabilirsiniz Styleşöyle inline:

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

(Ayrıca, kullandığınız {x:Type}notasyon gerekli görünmüyor)


Her iki cevap da doğru olsa da en çok tercih edilen budur. teşekkür ederim.
New Bee

20

Ray'in çözümünü uygulamanın başka bir yolu şudur:

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

Çözüm, otomatik olarak uygulanan bir kaynak oluşturmak yerine stil özelliğini doğrudan ayarlar. Daha iyi olduğunu söylemiyorum, sadece başka bir yol ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.