首页 > 解决方案 > 如何限制 ListView 中单元格的长度?

问题描述

我有这样的列表视图在此处输入图像描述

并且有一个.xalm

...
<ListView
                x:Name="LVLog"
                ToolTip="Log of task(s) execution"
                Background="WhiteSmoke"
                HorizontalAlignment="Stretch"
                VerticalAlignment="Stretch"/>
...

还有我如何添加项目LVLog

LVLog.Items.Add(message.Log);

正如您所看到的,如果行足够长,它会超出边界,用户需要水平滚动才能将日志阅读到最后。

问题是:如果它来到边界,有没有办法在下一行写一行?

标签: c#wpf

解决方案


您可以使用 aTextBlock作为ItemTemplate并设置TextTrimming它。所以文本将被修剪

长长的洛..

以及您将在工具提示中看到的全文:

<ListView ItemsSource="{Binding YourCollection}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding ...}" TextTrimming="CharacterEllipsis" ToolTip="{Binding ...}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

如果你想有更多的行,那么只需TextWrapping="Wrap"设置TextBlock

<ListView ItemsSource="{Binding YourCollection}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
    <ListView.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding ...}" TextWrapping="Wrap"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

推荐阅读