2009-03-18 9 views
7

Sono nuovo allo sviluppo di WPF, ho una ListView e voglio bloccare la riga di intestazione in modo che non scorra schermo quando l'utente scorre la lista. Il codice XAML, ho ereditato, simile a questa:WPF: Come congelare una riga di intestazione di ListView in modo che non scorra dallo schermo

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
    <DockPanel> 
    <forms:BindableGrid DockPanel.Dock="Top" [code snipped] > 
    <ListView.View> 
     <GridView> 
     <GridViewColumn Header="ColA" DisplayMemberBinding="{Binding ColA}" /> 
     <GridViewColumn Header="ColB" DisplayMemberBinding="{Binding ColB}" /> 
      [etc] 

risposta

11

Il ListView fa già questo - ha una interna ScrollViewer che scorre solo gli elementi e non l'intestazione.

Il problema è che il ScrollViewer esterna racconta la sua bambina (la DockPanel) che ha spazio infinito a disposizione, e la DockPanel dice questo ai suoi figli, così il vostro ListView finisce per occupare più spazio di cui ha bisogno per visualizzare tutti gli articoli e lo ScrollViewer interno non vengono visualizzati.

Se si toglie il telefono esterno ScrollViewer, lo ListView deve rilevare che ha uno spazio limitato e verrà visualizzato lo ScrollViewer interno.

Questo ovviamente influenzerà il resto del materiale nel tuo DockPanel, quindi vedrei cosa succede e andare da lì.

+0

Fantastico! Questo l'ha risolto, grazie. – hamishmcn

+0

Brillante. Solo il prompt di cui avevo bisogno per ottenere la visualizzazione di ListView nel modo che volevo. Non hai bisogno dello scrollviewer in situazioni come queste ... – AndyUK

Problemi correlati