我有一个包含文本块和图像的列表框。我想如果文字太长则转到第二行。目前只有文字可见。这是我的XAML
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" Margin="0,10,0,0" />
<TextBlock Text="{Binding title}" Margin="50,0,12,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
有人能帮助我吗?
截图
答案 0 :(得分:0)
啊啊,所以我猜它就像看起来一样简单。您只需要限制文本的位置宽度并调用TextWrapping
,您可以使用多个选项来完成该操作。这里有几种可能性......
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" Margin="0,10,0,0" />
<TextBlock Text="{Binding title}" Margin="50,0,12,0" TextWrapping="Wrap" MaxWidth="{Binding ActualWidth, ElementName=Self}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
或者你可以让一个小组做它应该受到其父母的限制......
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding imgurl}" MaxHeight="120" MaxWidth="120" />
<TextBlock Grid.Column="1" Text="{Binding title}" TextWrapping="Wrap" Margin="50,0,2,0" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
或者取决于这个ListBox如何作为一个孩子布局,它甚至可能就像将TextWrapping="Wrap"
添加到TextBlock然后在ListBox本身上设置MaxWidth
一样简单。无论哪种方式,希望这有助于...:)