2009-01-27 20 views
32

Tengo un enlace de datos y ListBox itemtemplated:ListBox con ItemTemplate

<ListBox x:Name="lbLista" 
     ScrollViewer.VerticalScrollBarVisibility="Visible"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <CheckBox IsChecked="{Binding Deleteable, Mode=TwoWay}" /> 
      <Label Content="{Binding Name}" /> 
     </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

el ITES muestran bien y que provienen de un ObservableCollection.

El problema es la barra de desplazamiento que parece pero no es utilizable - no tiene un mango para agarrar. He intentado configurar algunas propiedades adjuntas de ScrollView en ListBox, pero no afectan la situación.

Respuesta

30

Pegué el código en el proyecto de prueba, agregué unos 20 elementos y obtuve barras de desplazamiento útiles, no hay problema, y ​​funcionan como se esperaba. Cuando solo agrego un par de elementos (de modo que el desplazamiento no es necesario) no obtengo una barra de desplazamiento utilizable. ¿Podría este ser el caso? que no estás agregando suficientes elementos?

Si quita el ScrollViewer.VerticalScrollBarVisibility="Visible", las barras de desplazamiento solo aparecen cuando las necesita.

9

ListBox tratará de ampliar en altura que está disponible .. Cuando se establece la propiedad Altura del cuadro de lista se obtiene una ScrollViewer que realmente funciona ...

Si desea que su ListBox a accodate la altura disponible, puede ser que desee para tratar de regular la altura de los controles de los padres .. en una cuadrícula, por ejemplo, ajustar la altura de automóviles en su RowDefinition puede hacer el truco ...

HTH

0

Thnaks de respuesta. Lo intenté yo mismo también para un Proyecto Vacío y, he aquí, todopoderoso creador del cielo y siete mares, funcionó. Originalmente tenía ListBox dentro de la cual estaba dentro de root. ¡Por alguna razón, a ListBox no le gusta estar dentro de StackPanel, en absoluto! =)

-pom-

+7

Realmente debería aceptar la respuesta original que lo ayude, no su propia confirmación. :-) –

+0

Crédito donde se debe y todo eso ... –

4

I nunca han tenido un poco de suerte con cualquier contenido desplazable colocado dentro de un StackPanel (cualquier cosa derivada de ScrollableContainer. StackPanel tiene un mecanismo de distribución extraña que confunde a los controles secundarios cuando se ha completado la operación de medida y encontré que el tamaño vertical termina infinito, por lo tanto no limitado, por lo que va más allá de los límites del contenedor y termina recortado. La barra de desplazamiento no se muestra porque el control cree que tiene todo el espacio del mundo cuando no lo hace t

Siempre debe colocar el contenido desplazable dentro de un contenedor que pueda resolverse a una altura conocida durante su operación de diseño en tiempo de ejecución, de modo que las barras de desplazamiento se dimensionen adecuadamente El contenedor principal en el árbol visual debe poder resolverse a una altura real, y esto sucede en la cuadrícula si establece el alto de RowDefinition o en automático o fijo.

Esto también ocurre en Silverlight.

-em-

Cuestiones relacionadas