为什么我的TextBlock没有换行

本文关键字:换行 TextBlock 我的 为什么 | 更新日期: 2023-09-27 17:57:42

我几乎读过互联网上关于文本包装的每一个帖子(好吧,不是真的),但还没能想出一个解决方案来解释为什么我的TextBlock不会包装。这是我窗口中的整个XAML:

<DockPanel>
    <ListView ItemsSource="{Binding Errors}"
              SelectionMode="Single"
              HorizontalContentAlignment="Stretch">
        <ListView.ItemTemplate>
            <DataTemplate DataType="{x:Type local:Error}">
                <DockPanel>
                    <TextBlock Text="{Binding ErrorMessage}"
                               TextWrapping="WrapWithOverflow"
                               VerticalAlignment="Center" />
                </DockPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</DockPanel>

我得到的是一个延伸到我的窗口之外的TextBlock。我尝试过使用其他DataTemplate,如Grid,但没有成功。唯一有效的解决方案是在TextBlock上设置一个静态宽度,但我宁愿不这样做。欢迎提出任何建议。谢谢

为什么我的TextBlock没有换行

尝试禁用ScrollViewer.HorizontalScrollBarVisibility

<ListView .... ScrollViewer.HorizontalScrollBarVisibility="Disabled"

您可以尝试删除ItemTemplate中的DockPanel吗?

<DockPanel>
    <ListView ItemsSource="{Binding Errors}"
              SelectionMode="Single"
              HorizontalContentAlignment="Stretch">
        <ListView.ItemTemplate>
            <DataTemplate DataType="{x:Type local:Error}">
                    <TextBlock Text="{Binding ErrorMessage}"
                               TextWrapping="WrapWithOverflow"
                               VerticalAlignment="Center" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</DockPanel>