2017-06-22 3 views
0

Je veux du texte dans la colonne 3 wrap et ne pas avoir de barre de défilement horizontale. Pourquoi ça ne marche pas?ItemsControl/ListBox éléments dépassent la largeur disponible

<ItemsControl x:Name="listMessages" ItemsSource="{Binding Messages}" Grid.IsSharedSizeScope="True"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="Column1"/> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="Column2"/> 
        <ColumnDefinition Width="*" SharedSizeGroup="Column3"/> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="Column4"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Grid.Column="0" Text="Text1" /> 
       <TextBlock Grid.Column="1" Text="Text2" /> 
       <TextBlock Grid.Column="2" Text="Very long text that should wrap to the next line, but it doesn't work" TextWrapping="Wrap"/> 
       <TextBlock Grid.Column="3" Text="Text4" /> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

Les éléments prennent plus de largeur que ce qui est disponible pour ItemsControl. Le même problème est avec ListBox.

J'ai essayé d'ajouter ScrollViewer.HorizontalScrollbarVisibility=Disabled à la fois sur ItemsControl et Grid, mais cela n'aide pas.

+1

Essayez de supprimer l'attribut SharedSizeGroup de l'élément . – mm8

+1

Ou faites ce que vous faites habituellement pour montrer des colonnes dans un ItemsControl: utilisez un ListView avec un GridView. – Clemens

+0

La suppression de SharedSizeGroup ne change rien. J'utilise ItemsControl parce que je n'ai pas besoin de sélection. – Arek

Répondre

1

Le texte sera enveloppées si vous ne définissez pas la propriété SharedSizeGroup:

<ColumnDefinition Width="*"/> 

emballage texte et des groupes de taille partagés ne vont pas bien ensemble. Vous pouvez spécifier un MaxWidth fixe pour le ColumnDefinition ou le TextBlock.