WPF TextBlock填充正在切断文本
题
我在 Grid
中有一个 TextBlock
,其 Padding
属性设置为5.有时最后一个字符会被截断,具体取决于什么字符串 Text
属性设置为。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="SomeClass">
<ScrollViewer Padding="5" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Label
Grid.Row="0" Grid.Column="0"
Content="SomeLabel"
HorizontalAlignment="Right"
HorizontalContentAlignment="Right"
VerticalAlignment="Center" />
<TextBlock
Grid.Row="0" Grid.Column="1"
HorizontalAlignment="Left"
Padding="5"
Text="0x0F"
TextWrapping="Wrap"
VerticalAlignment="Top" />
</Grid>
</ScrollViewer>
</UserControl>
当 Text
设置为 0x0F
时, F
不可见。当它设置为 0xAB
时,字符串显示就好了。将 Padding
设置为0也可以使字符串显示正常。
解决方案
你所描述的显然是WPF中的布局错误(可能在TextBlock中)。最后一个字母是否被包装(和切断)似乎取决于字符串的实际宽度和最后一个字母相对于填充大小的大小。
我建议您报告错误此处。
要解决此问题,您可以使用以下代码(只需在文本块周围添加边框并在其中设置填充):
<Border Padding="5" Grid.Row="0" Grid.Column="1">
<TextBlock HorizontalAlignment="Left"
Text="0x0F" TextWrapping="Wrap"
VerticalAlignment="Top" />
</Border>
其他提示
制作包含文本块自动尺寸的网格列,如下所示
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.COlumn="0" Text="{Binding Path=SomeViewModelProperty}" />
</Grid>
如果你将TextBlock的高度设置为100,那么F会被包裹吗?
只需增加ComboBoxItem的高度,就可以解决问题。
不隶属于 StackOverflow