ListViewItem中的TextBlock将不会换行

时间:2017-10-21 02:39:05

标签: c# xaml uwp

目前在我的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设置为BarTextWrapping.Wrap中的文字也不会换行,只会被切断。

包装不起作用:

WrapingNotWorking

在我使用MessageItem的另一个ListView上,会出现一个水平滚动条(但不在MessageItems ListView上)。我希望看到包装工作,因为它非常完整(因为消息可能会很长)。

谢谢!

2 个答案:

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