Listbox中的Silverlight文本块使其扩展而不是包装文本

时间:2012-05-05 20:44:28

标签: silverlight listbox grid word-wrap textblock

我有这样的事情:

<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元素占据整个空间。

提前致谢!

2 个答案:

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