2011-06-03 9 views
19

Hola tengo un ListView que se une a una colección. Establecí la altura del ListView en automático para que ocupe todo el espacio de la región. Sin embargo, no hay barra de desplazamiento después de establecer la altura en automático. Si le doy una altura, la barra de desplazamiento se mostraría.WPF ListView sin barra de desplazamiento si la altura está configurada en auto

el margen de beneficio es más o menos como la siguiente

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

Tengo el presentimiento de que "? Cualquier pensamiento" no es tu pregunta real aquí. – BoltClock

+0

¿Qué tipo de contenedor/panel es el 'ListView' dentro? –

Respuesta

43

Tengo la corazonada de que su ListView está dentro de un panel que le permite expandirse verticalmente sin límite.

Si se pone un ListView dentro de un StackPanel, por ejemplo, la altura de la ListView 's puede superar la altura de la StackPanel. El ListView ha aumentado su altura para mostrar todos sus elementos, por lo que a él respecta, y por lo tanto no tiene barra de desplazamiento.

Sin embargo, si cambia a un StackPanel que Grid, donde los controles tratan automáticamente para ajustarse a sí mismos dentro de esa zona, el ListView tendrá automáticamente una barra de desplazamiento cuando contiene más elementos de los que puede mostrar.

Esto probablemente se resuelva más simplemente ajustando su diseño que contiene el ListView.

+0

eso es exactamente lo que tengo aquí. Actualizó la publicación con muestra de marcado. – Eatdoku

+0

Preguntaría: ¿Son los 2 'Expansores' las únicas cosas en el 'Panel de apilamiento'? ¿El 'StackPanel' es lo único en 'Grid'? ¿Desea que 'ListView' solo ocupe todo el espacio disponible en la' Grilla' externa? Si todos esos son * sí *, podría usar un 'DockPanel' en lugar de un' StackPanel'. Si el 'Expander' con' ListView' es el último elemento secundario, llenará el área restante. –

+0

he reemplazado el stackpanel con grilla, problema resuelto :) – Eatdoku

3

¿Por qué se muestran una barra de desplazamiento si no hay nada para desplazarse?

Si desea anular cualquier comportamiento predeterminado, puede establecer ScrollViewer.VerticalScrollBarVisibility="Visible" en ListBox.

6

En lugar de establecer

Height="Auto" 

conjunto:

Height="1*" 
+0

Um, ¿quiso referirse a la propiedad 'Height' en una o más' * Row' * 's de 'Grid'? AFAIK, de todos los Elementos mencionados, los '' Row' * 's de 'Grid''s son los únicos Elementos cuya Propiedad' Height 'acepta la notación" * ". – Tom

Cuestiones relacionadas