2010-12-09 8 views
8

Tengo una cuadrícula de 3 columnas para mi diseño con cada ancho establecido en Width="*". Para la cuadrícula del medio (2º), tengo otra cuadrícula de 3 columnas cada una que contiene su propio bloque de texto, y de nuevo el ancho de las grillas de la columna está establecido en Width="*".Textblock.TextTrimming no funciona dentro de una cuadrícula

Cuando se cambia el tamaño de la ventana, las cuadrículas se redimensionan como se espera, sin embargo, el tercer bloque de texto no se recorta si el texto sale del límite de la cuadrícula. Tengo el cuadro de texto establecido con TextTrimming="WordEllipsis" y TextWrapping="Wrap", y las propiedades no se aplican por alguna razón.

, aquí tienes el código que tengo:

de diseño de cuadrícula:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition MinWidth="150" MaxWidth="300" Width="1*" /> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition MinWidth="150" MaxWidth="500" Width="1*" /> 
     <ColumnDefinition Width="Auto"/> 
     <ColumnDefinition Width="2*"/> 
    </Grid.ColumnDefinitions> 
</Grid> 

segundo código de la columna:

<Grid Grid.Column="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="5" Width="Auto"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <TextBlock Text="{Binding Path=FeedItems.Count}" Foreground="White" FontSize="18" Width="Auto" FontWeight="SemiBold" /> 
    <TextBlock Text=" items from " Foreground="White" FontSize="18" Width="Auto" Grid.Column="1" /> 
    <TextBlock Text="{Binding Path=Name}" Foreground="White" FontSize="18" Grid.Column="2" TextTrimming="CharacterEllipsis" HorizontalAlignment="Left" Width="Auto" TextWrapping="NoWrap" ClipToBounds="True" /> 
</Grid> 

Respuesta

9

Para que esto funcione, se necesita la última columna en la segunda grilla para tener un * tamaño, de lo contrario le dirá al TextBlock que tiene tanto espacio como quiere, incluso si no lo hace. Las columnas de tamaño automático no restringirán el contenido a los límites de una grilla. Sin embargo, es probable que obtener mejores resultados si se hizo esto con una sola TextBlock, y múltiples Carreras:

<TextBlock FontSize="18" TextTrimming="CharacterEllipsis"> 
    <Run Text="{Binding Path=FeedItems.Count}" FontWeight="SemiBold" /> 
    <Run Text=" items from " /> 
    <Run Text="{Binding Path=Name}" /> 
</TextBlock> 

Tenga en cuenta que sólo se puede obligar Run.Text como de .NET 4.0. Si está utilizando una versión anterior del marco, tendrá que crear su propio BindableRun, que es bastante simple como se ve here.

+0

Saludos por la pista sobre el uso de Run.Text. Definitivamente usándolo a partir de ahora. Y tu respuesta ha solucionado mi problema. Muchas gracias. –

+0

Ta, esto funcionó para mí. El enlace BindableRun está roto, pero los Googles me llevaron a https://github.com/ksirg/blipface/blob/master/BlipFace/View/Controls/BindableRun.cs, entre otros. –

Cuestiones relacionadas