C# ListViewItem中的TextBlock赢得';t包装

C# ListViewItem中的TextBlock赢得';t包装,c#,xaml,uwp,C#,Xaml,Uwp,目前,在我的UWP应用程序中,我有一个自定义ListViewItem用作服务接收的消息的模板: 当数据来自服务时,我调用: MessageList.Items.Add(新建MessageItem(message)); (其中构造函数会自动使用消息中的数据填充Foo和Bar。) 但是,MessageItem中的文本不换行,只是被截断,即使Bar上的TextWrapping设置为TextWrapping.wrap 包装不起作用: 在我正在使用的另一个列表视图中,MessageItem,会出

目前,在我的UWP应用程序中,我有一个自定义ListViewItem用作服务接收的消息的模板:


当数据来自服务时,我调用:

MessageList.Items.Add(新建MessageItem(message));
(其中构造函数会自动使用消息中的数据填充Foo和Bar。)

但是,
MessageItem
中的文本不换行,只是被截断,即使
Bar
上的TextWrapping设置为
TextWrapping.wrap

包装不起作用:

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


谢谢大家!

发生这种情况的原因是
TextBlock
的宽度没有任何限制。我能想到的最简单的修复方法是将包含
TextBlock
StackPanel
的宽度限制为
ListView
的宽度

例如:

<ListView Name="MyContainer">
    <ListViewItem>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" >
            <Image Margin="5" VerticalAlignment="Top" Name="Picture" />
            <StackPanel VerticalAlignment="Center" Width="{Binding ElementName=MyContainer, Path=ActualWidth}">
                <TextBlock Name="Foo" FontWeight="Bold"/>
                <TextBlock Name="Bar" TextWrapping="Wrap" />
                <StackPanel Name="Things" />
            </StackPanel>
        </StackPanel>
    </ListViewItem>
</ListView>


请注意,我命名了
列表视图,并将
堆栈面板的宽度绑定到它。

发生这种情况的原因是
文本块的宽度没有任何边界。我能想到的最简单的修复方法是将包含
TextBlock
StackPanel
的宽度限制为
ListView
的宽度

例如:

<ListView Name="MyContainer">
    <ListViewItem>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" >
            <Image Margin="5" VerticalAlignment="Top" Name="Picture" />
            <StackPanel VerticalAlignment="Center" Width="{Binding ElementName=MyContainer, Path=ActualWidth}">
                <TextBlock Name="Foo" FontWeight="Bold"/>
                <TextBlock Name="Bar" TextWrapping="Wrap" />
                <StackPanel Name="Things" />
            </StackPanel>
        </StackPanel>
    </ListViewItem>
</ListView>


请注意,我已将
列表视图命名为
,并已将
堆栈面板的宽度绑定到它。

您的第一个
堆栈面板的
水平
方向设置允许您的
文本块无限延伸。
我建议改成

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>
ListView Name=“MyContainer”>

您的第一个
堆叠面板的
水平方向设置允许您的
文本块无限延伸。
我建议改成

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>
ListView Name=“MyContainer”>