TextBlock.TextWrapping的奇怪结果

时间:2012-01-10 15:08:20

标签: wpf wpf-controls

我启动一个新的WPF应用程序并将以下代码粘贴到MainWindow.xaml

<Canvas>
<TextBlock Text="Kammer 123" 
           MaxWidth="80"
           Padding="5, 0"
           TextWrapping="Wrap" 
           TextAlignment="Center" />
</Canvas>

预期的结果是左上角的TextBlock渲染“Kammer 123”,但我看到的只是“Kammer”。如果我将Text属性更改为“Kammer 1234”或“Kammer 12”或“Kammer abc”,则渲染是正确的。使用“Kammer 12345”文本正确包装。这是一个我不明白的错误或功能吗?

1 个答案:

答案 0 :(得分:2)

非常有趣的错误!我可以确认你的结果。在Windows XP 32位,96 dpi时,“123”被切断,但其他序列正确呈现。在Windows 7 64位,120 dpi时,所有字符串都正确呈现。所以这确实是一个WPF文本布局错误,无论是96 dpi还是32位。

一些实验表明,填充线是罪魁祸首。删除该行或将水平填充减少为1,文本显示正确。另一种方法是使用Margin而不是Padding,这似乎有效。