为什么WPF按钮的文本内容会出现不想要的空白?
我在一个StackPanel中有一个按钮,这是一个用于关闭界面的简单按钮,所以我希望它显示为一个正方形按钮,其中心有一个“x”字。我已将内边距设置为零,并将HorizontalContentAlign和VerticalContentAlign都设置为"Center",但“x”仍然出现在按钮底部(或者如果我的FontSize相对于Height太大,则可能被截断)。好像在按钮顶部有一些填充物防止文本使用整个垂直空间。
我的XAML代码如下:
<StackPanel Orientation="Horizontal">
<Label Content="{Binding GenderFilter.Title}" FontWeight="Bold" Width="60" />
<Button Padding="0" Width="15" Height="15" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="12">x</Button>
<Label Content="{Binding GenderFilterExpander.SelectedValue}" />
</StackPanel>
问题与我将按钮的VerticalContentAlign属性设置为Stretch或Top是完全相同的。如果我删除高度和宽度属性,让按钮自行决定,则控件不会显示为正方形,而是竖直矩形,并且"x"仍然没有居中。
更新:
虽然按钮和内容现在都完美地居中了,但按钮仍然显示得比它需要的要大得多,就好像应用了很高的填充一样。
<Style x:Key="ClearFilterButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Padding" Value="0" />
<Setter Property="Width" Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=ActualHeight}" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Content" Value="X" />
<Setter Property="FontSize" Value="8" />
</Style>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding GenderFilter.Title}" FontWeight="Bold" Width="60" />
<Button Style="{StaticResource ClearFilterButtonStyle}"
Visibility="{Binding GenderFilterExpander.ClearFilterVisibility}" />
<Label Content="{Binding GenderFilterExpander.SelectedValue}"
Visibility="{Binding GenderFilterExpander.SelectedValueVisibility}" />
</StackPanel>
</Expander.Header>
在DockPanel中的GroupBox中的StackPanel内部的Expander。
在设计视图中,按钮的大小是正确的,只包含X,但在运行时它们会变得更大。 我该如何纠正这个问题?