文本块在网格中无法自动换行

4

我有以下的XAML代码,它用于显示一个Image和两个并排放置的TextBlocks:

<StackPanel Orientation="Horizontal" >
    <Image Source="{Binding CoverArt}" Height="150" />
        <StackPanel Orientation="Vertical">
            <StackPanel>
                <TextBlock FontSize="30" Text="{Binding Title}" TextWrapping="Wrap" />
            </StackPanel>
            <Grid Width="auto">
                <TextBlock FontSize="22" Text="{Binding Summary}" TextWrapping="Wrap" />
            </Grid>
         </StackPanel>
</StackPanel>

我的问题是如何让文本自动换行。我尝试使用 Grid 并分配列的宽度,但并没有起作用。将宽度值设置为自动也不行。唯一有效的方法是硬编码设置宽度,但我不想这样做。谢谢。

你有尝试将列的宽度设置为分数吗?例如 width="2*" ,这样可以在没有像素设置大小的情况下给你一些边界。不管怎样,你需要为容器设置约束条件。如果你有两列且没有设置大小,则它们将各占50%。使用 2* 将使该列占总列宽的2/3。 - Iris Classon
1个回答

6

一个Stackpanel会根据其内容的大小进行拉伸,因此它不是我想要使用的。使用网格,如下面的帖子所解释的:

TextBlock TextWrapping not wrapping inside StackPanel

Text in StackPanel doesn't wrap (wp7)

TextBlock inside stackpanel does not wrap text

快速比较: 使用stackpanel之前

enter image description here

在一个网格后(您可能需要重新安排元素的位置)

enter image description here

最后一段的代码:
<pre>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Ellipse Fill="red" Width="150" Height="150" />
        <StackPanel Grid.Column="1" Orientation="Vertical">
            <StackPanel>
                <TextBlock FontSize="30" Text="basdljhba dnaiks d., kasndca casn oiäc cas lkcnaso ca dxjwöbdq wkjöbdqw dkjwqb " TextWrapping="Wrap" />
            </StackPanel>
            <Grid Width="auto">
                <TextBlock FontSize="22" Text="dewdewdewdewdewewd" TextWrapping="Wrap" />
            </Grid>
        </StackPanel>
    </Grid>

你尝试过将列的宽度设置为分数吗?width="2*" 这样可以给你一些边界,而不需要设置像素大小。无论如何,你需要为容器设置约束条件。如果有两列且未设置大小,则它们将各占50%。2*将使该列占总列宽的2/3,请参见下面的示例。

enter image description here


谢谢,这些图片和链接帮助我更好地理解了 :) - Jurgen Camilleri
没问题,在线上解释问题(或解决方案)并不容易 :) - Iris Classon
比我更好的解釋了潛在問題,我現在會刪除我的。謝謝Iris。 - ZombieSheep

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接