2009-08-06 5 views
1

Je sais que ça doit être évident, mais je commence avec WPF et je suis coincé:tête ne se présente pas dans WPF ListView

J'ai la ListView suivante (dans la deuxième ligne de la grille principale de la page) , le contenu s'affiche mais l'en-tête ne l'est pas!

<ListView Grid.Row="1" Name="container" ItemsSource="{Binding MyCollection}" > 
    <ListView.View> 
     <GridView> 
     <GridViewColumn Width="50" Header="A" DisplayMemberBinding="{Binding A}"/> 
     <GridViewColumn Width="50" Header="B" DisplayMemberBinding="{Binding B}"/> 
     <GridViewColumn Width="50" Header="C" DisplayMemberBinding="{Binding C}"/>    
     </GridView> 
    </ListView.View> 
</ListView> 

Toute aide appréciée!

EDIT:

Merci à Roel j'ai pu trouver un style dans le ResourceDictionary casuing ce problème:

<Style TargetType="{x:Type ListView}" BasedOn="{StaticResource {x:Type ListBox}}"> 
    <Setter Property="BorderBrush" Value="Black"/> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <ScrollViewer Margin="{TemplateBinding Padding}" VerticalScrollBarVisibility="Visible"> 
        <WrapPanel IsItemsHost="True" MinWidth="100" Width="{Binding ActualWidth,RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"> 
        </WrapPanel> 
       </ScrollViewer> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Comment puis-je conserver ce style pour le reste du projet sans appliquer à cette liste spécifique?

+0

Essayez de définir manuellement la hauteur de la ligne pour vérifier si le haut de ListView est simplement masqué. – Noldorin

+1

il ne semble pas y avoir quelque chose de mal avec ce bit, XamlPadX montre une listview avec les en-têtes. Y at-il des ressources définies qui écrasent le style peut-être? – RoelF

+0

voir modifier, vous avez raison sur les ressources! merci – JohnIdol

Répondre

4

Vous pouvez remplacer le style uniquement pour cette liste. c'est probablement le moyen le plus simple:

<ListView Grid.Row="1" Name="container" ItemsSource="{Binding MyCollection}" > 
<ListView.Style> 
    <Style TargetType="{x:Type ListView}"/> 
</ListView.Style> 

<ListView.View> 
     <GridView> 
     <GridViewColumn Width="50" Header="A" DisplayMemberBinding="{Binding A}"/> 
     <GridViewColumn Width="50" Header="B" DisplayMemberBinding="{Binding B}"/> 
     <GridViewColumn Width="50" Header="C" DisplayMemberBinding="{Binding C}"/>    
     </GridView> 
    </ListView.View> 
</ListView> 

espérons que cela aide!

+0

merci pour votre aide! Maintenant, je suis en train de styler l'en-tête ... Je vais probablement poster une autre question :) – JohnIdol

+2

je peux vous épargner le problème: définir le ColumnHeaderTemplate sur le GridView (pas le ListView.GridView!) ;-) – RoelF

+0

merci pour le pointage moi dans la bonne direction! – JohnIdol