2011-06-03 4 views
19

Ciao ho un ListView che si lega a una collezione. Ho impostato l'altezza di ListView su Auto affinché occupi tutto lo spazio nella regione. Tuttavia non c'è la barra di scorrimento dopo aver impostato l'altezza su automatico. Se gli darò un'altezza, la barra di scorrimento verrà visualizzata.WPF ListView nessuna barra di scorrimento se altezza impostata su auto

il markup è più o meno simile al seguente

<Grid> 
    <StackPanel> 
     <Expander> 
      <DataGrid> 
     <Expander> 
      <ListView> 
+0

ho la sensazione che "? Ogni pensiero" non è la tua domanda attuale qui. – BoltClock

+0

Che tipo di contenitore/pannello è il 'ListView' all'interno? –

risposta

43

Ho l'impressione che il tuo ListView si trovi all'interno di un pannello che consente di espandersi verticalmente senza limiti.

Se si mette un ListView all'interno di un StackPanel, ad esempio, l'altezza s' il ListView possono superare l'altezza del StackPanel. Il ListView ha aumentato la sua altezza per mostrare tutti i suoi elementi, per quanto è interessato, quindi nessuna barra di scorrimento.

Tuttavia, se si cambia che StackPanel ad un Grid, in cui i controlli tentano automaticamente per adattarsi se stessi all'interno di quella zona, il ListView avrà automaticamente una barra di scorrimento quando contiene più elementi di quanti ne possa mostrare.

Questo sarà probabilmente risolto semplicemente modificando il layout che contiene lo ListView.

+0

questo è esattamente quello che ho qui. Aggiornato il post con un esempio di markup. – Eatdoku

+0

Vorrei chiedere: I 2 'Expanders' sono le uniche cose nello' StackPanel'? "StackPanel" è l'unica cosa nella "Griglia"? Volete che il 'ListView' occupi tutto lo spazio disponibile nella' Grid' esterna? Se tutti questi sono * sì *, potresti usare un 'DockPanel' invece di uno' StackPanel'. Se 'Expander' con' ListView' è l'ultimo figlio, riempirà l'area rimanente. –

+0

ho sostituito lo stackpanel con la griglia, problema risolto :) – Eatdoku

3

perché dovrebbe mostrare una barra di scorrimento se non c'è niente di scorrere?

Se si desidera sovrascrivere qualsiasi comportamento predefinito, è possibile impostare ScrollViewer.VerticalScrollBarVisibility="Visible" sul ListBox.

6

Invece di impostare

Height="Auto" 

set:

Height="1*" 
+0

Um, intendevi fare riferimento alla proprietà 'Height' su uno o più *' Row' * s del 'Grid'? AFAIK, di tutti gli Elementi menzionati, i * 'Row' * di' Grid' sono gli unici elementi la cui proprietà 'Height' accetta la notazione" * ". – Tom