我有以下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
并指定列的宽度,但它不起作用。也没有将宽度值设置为自动。唯一有效的是硬编码宽度,但我不希望这样。感谢。
答案 0 :(得分:5)
Stackpanel会扩展到其内容的大小,所以它不是我会使用的。使用网格,如以下帖子中所述:
TextBlock TextWrapping not wrapping inside StackPanel
Text in StackPanel doesn't wrap (wp7)
TextBlock inside stackpanel does not wrap text
快速比较: 之前使用stackpanel
使用一个网格后(您可能需要稍微重新排列元素)
最后一段的代码:
<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列,见下面的示例。