मैं WPF ListView के हेडर को कैसे छिपा सकता हूं?


85

मैं WPF 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>

जवाबों:


139

एक शैली को परिभाषित करें जैसे

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

इसे ऐसे लागू करें

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

2
क्या यह ढाँचा नहीं होना चाहिए। विश्वसनीयता, कम से कम WPF 3.5 में? (मुझे पता है कि यह एक पुराना विषय है, लेकिन यह Google पर शीर्ष पर है, इसलिए यह बहुत सारे लोगों के लिए उपयोगी है)
रॉय टी।

1
यह होने की जरूरत नहीं है। आपने लक्ष्य प्रकार निर्दिष्ट किया है, इसलिए आपको यह निर्दिष्ट करने की आवश्यकता नहीं है कि संपत्ति कहाँ है।
रे

बहुत बढ़िया पोस्ट ... मुझे समय का एक ढेर बचा लिया और एक इलाज किया .. धन्यवाद
केव

यदि पुन: उपयोग एक कारक नहीं है, तो यह <GridView><GridView.ColumnHeaderContainerStyle><Style TargetType="{x:Type GridViewColumnHeader}"><Setter Property="Visibility" Value="Collapsed" /></Style></GridView.ColumnHeaderContainerStyle></GridView>
ग्रिडइन पर

55

इस समाधान के लिए धन्यवाद। आप Styleइनलाइन भी डाल सकते हैं :

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

(इसके अलावा, {x:Type}आपके द्वारा उपयोग किए जाने वाले अंकन की आवश्यकता प्रतीत नहीं होती है)


हालांकि दोनों उत्तर सही हैं, यह सबसे पसंदीदा है। धन्यवाद।
नई बीई

20

एक और तरीका है कि आप रे का समाधान इस तरह से लागू कर सकते हैं:

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

समाधान शैली संसाधन सेट करने के बजाय सीधे संसाधन सेट करता है जो स्वचालित रूप से लागू होता है। यह बेहतर नहीं कह रहा है, बस एक और तरीका ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.