【发布时间】:2011-04-19 20:54:20
【问题描述】:
是否存在 WPF 按钮的文本内容在文本上方出现多余空格的原因?
我在 StackPanel 中有一个按钮。这个按钮是一个简单的关闭按钮,所以我希望它显示为一个方形按钮,中间有一个“x”。我已将填充设置为零并将 HorizontalContentAlign 和 VerticalContentAlign 都设置为 Center,但“x”仍然出现在按钮的底部(如果我的 FontSize 相对于我的高度太大,甚至会被截断)。就好像按钮顶部有一些填充物阻止了文本使用完整的垂直空间。
我的 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,问题完全一样。如果我删除了 Height 和 Weight 属性,以便按钮确定它自己的属性,那么控件不会显示为正方形,而是一个直立的矩形,并且“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 内。
在设计视图中,按钮大小正确,仅包含 X,但在运行时它们会放大。我该如何纠正?
【问题讨论】:
-
小写的“x”在顶部有一些填充,仅仅是因为它是一个小写字母。尝试使用大写的“X”或使用 WPF 的绘图功能自己绘制 X:social.msdn.microsoft.com/Forums/en-US/wpf/thread/…
标签: wpf xaml wpf-controls