目前在我的UWP应用程序中,我有一个自定义ListViewItem用作服务接收的消息的模板:
<ListViewItem
x:Class="App.Controls.MessageItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
...>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<Image Margin="5" VerticalAlignment="Top" Name="Picture" />
<StackPanel VerticalAlignment="Center">
<TextBlock Name="Foo" FontWeight="Bold" />
<TextBlock Name="Bar" TextWrapping="Wrap" />
<StackPanel Name="Things" />
</StackPanel>
</StackPanel>
当数据从服务进来时,我打电话给:
MessageList.Items.Add(new MessageItem(message));
(构造函数自动使用消息中的数据填充Foo和Bar。)
但是,即使MessageItem
上的TextWrapping设置为Bar
,TextWrapping.Wrap
中的文字也不会换行,只会被切断。
包装不起作用:
在我使用MessageItem
的另一个ListView上,会出现一个水平滚动条(但不在MessageItems
ListView上)。我希望看到包装工作,因为它非常完整(因为消息可能会很长)。
谢谢!
答案 0 :(得分:2)
发生这种情况的原因是tmp
的宽度不受任何限制。我能想到修复它的最简单方法是将包含tmp-data.xml
的{{1}}的宽度限制为Help
的宽度。
例如:
About Eclipse
请注意,我已将TextBlock
命名为StackPanel
,并将TextBlock
的宽度绑定到它。
答案 1 :(得分:0)
StackPanel
的第一个Horizontal
方向设置允许您的TextBlock
无限延伸。
我建议将其改为
ListView Name="MyContainer">
<ListViewItem>
<Grid HorizontalAlignment="Stretch" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Margin="5" VerticalAlignment="Top" Name="Picture" />
<StackPanel VerticalAlignment="Stretch" Grid.Column="1">
<TextBlock Name="Foo" FontWeight="Bold" HorizontalAlignment="Left"/>
<TextBlock Name="Bar" TextWrapping="Wrap" HorizontalAlignment="Left"/>
<StackPanel Name="Things" />
</StackPanel>
</StackPanel>
</ListViewItem>
</ListView>