我在TextBlock
中有一个Grid
,其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也会使字符串显示正常。
答案 0 :(得分:7)
你所描述的显然是WPF中的布局错误(可能在TextBlock中)。最后一个字母是否被包装(和切断)似乎取决于字符串的实际宽度和最后一个字母相对于填充大小的大小。
我建议你报告错误here。
要解决此问题,您可以使用以下代码(只需在文本块周围添加边框并在其中设置填充):
<Border Padding="5" Grid.Row="0" Grid.Column="1">
<TextBlock HorizontalAlignment="Left"
Text="0x0F" TextWrapping="Wrap"
VerticalAlignment="Top" />
</Border>
答案 1 :(得分:0)
制作包含文本块自动尺寸的网格列,如下所示
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.COlumn="0" Text="{Binding Path=SomeViewModelProperty}" />
</Grid>
答案 2 :(得分:0)
如果你将TextBlock的高度设置为100,那么F会被包裹吗?
答案 3 :(得分:0)
只需增加ComboBoxItem的高度,就可以解决问题。