C# ListViewItem中的TextBlock赢得';t包装
目前,在我的UWP应用程序中,我有一个自定义ListViewItem用作服务接收的消息的模板: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,会出
当数据来自服务时,我调用:
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”>