我有这样的事情:
<ListBox ItemsSource="{Binding List}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Property}" TextWrapping="Wrap" Grid.Column="0"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我遇到的问题是TextBlock会在文本太长时展开Grid列(和Listbox),而不是按预期包装它。也许我完全不了解网格的星大概念,但是我看到它的方式,因为列宽设置为“1 *”,这意味着“剩余空间可用”,Textblock不应该尝试扩展这个宽度,应该换成文本。
那么我该如何解决这个问题呢?顺便说一下,我需要Grid(或其他一些容器),因为除了Textblock之外还有其他组件。 ItemContainerStyle部分也在那里,以便Listbox元素占据整个空间。
提前致谢!
答案 0 :(得分:1)
尝试将ScrollViewer.HorizontalScrollBarVisibility="Disabled"
添加到ListBox。
答案 1 :(得分:-1)
如果它只是一个,则不需要列定义,请尝试使用以下内容:
<ListBox ItemsSource="{Binding List}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Property}" TextWrapping="Wrap" HorizontalAlignment="Stretch"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>