2017-06-22 5 views
0

Ich möchte Text in Spalte 3 Wrap und keine horizontale Bildlaufleiste haben. Warum funktioniert das nicht?ItemsControl/ListBox Elemente überschreiten verfügbare Breite

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

Elemente nehmen mehr Breite als ItemsControl zur Verfügung. Das gleiche Problem ist mit ListBox.

Ich habe versucht, ScrollViewer.HorizontalScrollbarVisibility=Disabled sowohl auf ItemsControl und Grid hinzuzufügen, aber das hilft nicht.

+1

Versuchen Sie, das SharedSizeGroup-Attribut aus dem Element zu entfernen. – mm8

+1

Oder machen Sie das, was Sie normalerweise tun, um Spalten in einem ItemsControl anzuzeigen: Verwenden Sie eine ListView mit einer GridView. – Clemens

+0

Das Entfernen von SharedSizeGroup ändert nichts. Ich verwende ItemsControl, weil ich keine Auswahl benötige. – Arek

Antwort

1

Der Text wird, wenn Sie die SharedSizeGroup Eigenschaft nicht eingestellt werden, eingewickelt:

<ColumnDefinition Width="*"/> 

Textumbruch und gemeinsame Größengruppen gehen nicht gut zusammen. Möglicherweise möchten Sie einen festen MaxWidth für den ColumnDefinition oder den TextBlock angeben.

Verwandte Themen