2017-06-22 45 views
0

我想要3列中的文本換行並且沒有水平滾動條。爲什麼這不起作用?ItemsControl/ListBox項目超出可用寬度

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

項目佔用比ItemControl可用的更多寬度。與ListBox相同的問題。

我試圖在ItemsControl和Grid上添加ScrollViewer.HorizontalScrollbarVisibility=Disabled,但這沒有幫助。如果不設置SharedSizeGroup屬性

+1

嘗試從元素中刪除SharedSizeGroup屬性。 – mm8

+1

或者做你通常做什麼來顯示ItemsControl中的列:使用帶有GridView的ListView。 – Clemens

+0

刪除SharedSizeGroup不會更改任何內容。我使用ItemsControl是因爲我不需要選擇。 – Arek

回答

1

文本將被包裹:

<ColumnDefinition Width="*"/> 

文字換行和共享尺寸組不順利起來。您可能需要爲ColumnDefinitionTextBlock指定固定的MaxWidth