2009-07-20 25 views
11

Mi ListBox tiene, entre otras cosas, un campo de descripción que puede ser bastante largo. En lugar de tener una barra de desplazamiento horizontal, quiero ajustar la palabra. Funciona si establezco el MaxWidth pero como el ListBox cambia de tamaño, no quiero codificar el valor.WPF listbox item not wordwrapping

¿Cuál es la mejor manera de hacerlo?

EDITAR: La descripción está en un TextBlock.

simplificado XAML (cosas unnessesary eliminado, aún muestra problema:

  <ListBox BorderThickness="0" Padding="5" Name="lstTasks"> 
      <ListBox.ItemsSource> 
       <Binding Source="{StaticResource dataTasks}"/> 
      </ListBox.ItemsSource> 

      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <TextBlock Text="{Binding Path=RequestDescription}" TextTrimming="WordEllipsis" TextWrapping="Wrap" Height="60" /> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
+0

Dado que dijiste que la configuración de MaxWidth funcionaría, ¿qué tal unir ese MaxWidth a algo que esté causando que el ancho cambie? –

Respuesta

29

intentar forzar la anchura de los ListBoxItems ser el ancho del cuadro de lista:

<ListBox 
    Name="lstTasks" 
    BorderThickness="0" 
    Padding="5" 
    HorizontalContentAlignment="Stretch"> 

También usted podría intentar deshabilitar horizontal Desplazamiento:

<ListBox 
    ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
    ...> 
+2

Gracias, al deshabilitar la barra de desplazamiento se solucionó al instante. –

+0

Gracias - la desactivación funcionó también para mí. –

+0

Si le funcionó, upvote. Los comentarios de pila no son calificaciones de eBay. – Gusdor

0

No hay sentido de usar envoltura y tr imming juntos. Debe usar uno de ellos texttrimming o textwrapping. Lo recorta no se envuelve.

Para textwrapping respuesta de Matt es correcto para el recorte debe definir ancho o maxwidth valor propiedad.

Es exactamente lo mismo para los desarrolladores de SL.