限制 WPF ListView 中 TextBlock 的宽度

Limiting the width of the TextBlock in a WPF ListView

我有一个 ListView,在它的 ItemTemplate 中有一个 TextBlock(在 Grid 中),它通常有很长的文本行。问题是如果文本太长,它会增加 ListViewItem 的宽度而不是环绕文本。如何限制 TextBlock 的宽度,使其不超过 ListView 的宽度?

我不想将宽度硬编码为一个常数值。

我尝试将 ScrollViewer.HorizontalScrollBarVisibility 属性 设置为 Disabled 并设置 TextWrapping= "Wrap" 在 TextBlock 上,但这并没有达到目的。 当我调试应用程序时,Live 属性 Explorer 显示即使 ScrollViewer.HorizontalScrollBarVisibility 被禁用,它仍然可以水平滚动( IScrollProvider.HorizontallyScrollable 属性 是 true).

知道如何正确限制文本块大小吗?

如果您不想对文本块的 MaxWidth 进行硬编码,只需根据 ListView 宽度为其指定一个相对宽度即可。

玩了一下,得到了预期的结果:

<ListView x:Name="listView" 
                  HorizontalAlignment="Stretch" 
                  ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=.}" TextWrapping="Wrap"></TextBlock>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

希望它也适合你!