1

我有这样的事情:

<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*”,这意味着“剩余可用空间”,文本块不应该尝试扩展超出这个宽度,应该换行。

那么我该如何解决这个问题呢?顺便说一句,我需要 Grid(或其他容器),因为除了 Textblock 之外还有其他组件。ItemContainerStyle 部分也在那里,因此 Listbox 元素占据了整个空间。

提前致谢!

4

2 回答 2

2

尝试添加ScrollViewer.HorizontalScrollBarVisibility="Disabled"到您的 ListBox。

于 2012-05-06T01:26:19.613 回答
-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> 
于 2012-05-06T13:01:57.443 回答