2010-12-09 53 views
8

J'ai une grille de 3 colonnes pour ma mise en page avec chacune de largeur définie à Width="*". Pour la grille du milieu (2ème), j'ai une autre grille de 3 colonnes contenant chacune son propre bloc de texte, et de nouveau la largeur des grilles de colonne est définie sur Width="*". Lorsque la fenêtre est redimensionnée, les grilles sont redimensionnées comme prévu, mais le troisième bloc de texte n'est pas tronqué si le texte dépasse la limite de la grille. J'ai la zone de texte définie avec TextTrimming="WordEllipsis" et TextWrapping="Wrap" et les propriétés ne sont pas appliquées pour une raison quelconque.Textblock.TextTrimming ne fonctionne pas à l'intérieur d'une grille

Voici une partie du code que j'ai:

grille de mise en page:

<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> 

2ème code colonne:

<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> 

Répondre

9

Pour que cela fonctionne, vous devez la dernière colonne dans la deuxième grille pour avoir une taille *, sinon il dira au TextBlock qu'il a autant d'espace qu'il le souhaite, même si ce n'est pas le cas. Les colonnes de taille automatique ne limitent pas le contenu aux limites d'une grille. Cependant, vous auriez probablement obtenir de meilleurs résultats si vous avez fait cela avec un seul TextBlock, et plusieurs Runs:

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

Notez que vous ne pouvez lier Run.Text à partir de .NET 4.0. Si vous utilisez une ancienne version de la structure, vous devrez créer votre propre BindableRun, ce qui est assez simple comme on le voit here.

+0

Vive le conseil sur l'utilisation de Run.Text. Certainement l'utiliser dès maintenant. Et votre réponse a résolu mon problème. Merci beaucoup. –

+0

Ta, cela a fonctionné pour moi. Le lien de BindableRun est cassé mais les Googles m'ont mené à https://github.com/ksirg/blipface/blob/master/BlipFace/View/Controls/BindableRun.cs, parmi d'autres. –