Текстовое содержимое кнопки WPF не центрируется по вертикали

Есть ли причина, по которой текстовое содержимое кнопки 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 или даже Топ. Если я удалю свойства «Высота» и «Вес», чтобы кнопка определяла свои собственные, тогда элемент управления будет отображаться не в виде квадрата, а в виде вертикального прямоугольника, а «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 или даже Топ. Если я удалю свойства «Высота» и «Вес», чтобы кнопка определяла свои собственные, тогда элемент управления будет отображаться не в виде квадрата, а в виде вертикального прямоугольника, а «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 или даже Топ. Если я удалю свойства «Высота» и «Вес», чтобы кнопка определяла свои собственные, тогда элемент управления будет отображаться не в виде квадрата, а в виде вертикального прямоугольника, а «x» по-прежнему не центрирован.

ОБНОВЛЕНИЕ: Хотя кнопка и содержимое теперь идеально центрированы по центру, кнопка по-прежнему отображается намного больше, чем нужно, как если бы было применено высокое значение Padding.

Мое определение стиля ресурса теперь выглядит следующим образом:

<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>

Expander находится внутри StackPanel внутри GroupBox внутри DockPanel.

В представлении дизайна кнопки имеют правильный размер, только содержат X, но во время выполнения они увеличиваются. Как я могу это исправить?

19
задан Val M 4 October 2010 в 08:53
поделиться