如何垂直对齐XAML UWP复选框

如何垂直对齐XAML UWP复选框,xaml,uwp,Xaml,Uwp,我正在尝试垂直对齐复选框。实际框显示在顶部。我希望它出现在中间。 这是XAML: <CheckBox FontSize="100" Content="Test" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" HorizontalContentAlignment="Center"/> 这就是它看起来的样子: 我见过类似的问题,但答案是使用Ve

我正在尝试垂直对齐复选框。实际框显示在顶部。我希望它出现在中间。 这是XAML:

  <CheckBox FontSize="100" Content="Test" VerticalContentAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" HorizontalContentAlignment="Center"/>

这就是它看起来的样子:

我见过类似的问题,但答案是使用VerticalContentAlignment。这是行不通的。一些答案建议使用不可缩放的负填充或边距。所以请不要标记为重复,这还没有真正得到回答。或者可能是WPF的答案,而不是UWP的答案

我知道您可以更改控件的样式,但是对于一些应该开箱即用的东西来说,这是一个很大的工作

我正在使用VS 2019 16.6.2和UWP v6.2.10

更新 这是我希望我的复选框的外观

如何垂直对齐XAML UWP复选框

对于需求,更好的方法是修改复选框的默认布局。默认布局是
,我们需要将其更改为
。我将分享风格的一部分,你可以直接使用它

<Grid
    x:Name="RootGrid"
    Background="{TemplateBinding Background}"
    BorderBrush="{TemplateBinding BorderBrush}"
    BorderThickness="{TemplateBinding BorderThickness}"
    CornerRadius="{TemplateBinding CornerRadius}"
    >
    <Grid.RowDefinitions>
        <RowDefinition Height="32" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid
        Height="32"
        HorizontalAlignment="Center"
        VerticalAlignment="Top"
        >
        <Rectangle
            x:Name="NormalRectangle"
            Width="20"
            Height="20"
            Fill="{ThemeResource CheckBoxCheckBackgroundFillUnchecked}"
            Stroke="{ThemeResource CheckBoxCheckBackgroundStrokeUnchecked}"
            StrokeThickness="{ThemeResource CheckBoxBorderThemeThickness}"
            UseLayoutRounding="False"
            />
        <FontIcon
            x:Name="CheckGlyph"
            FontFamily="{ThemeResource SymbolThemeFontFamily}"
            FontSize="20"
            Foreground="{ThemeResource CheckBoxCheckGlyphForegroundUnchecked}"
            Glyph="&#xE001;"
            Opacity="0"
            />
    </Grid>
    <ContentPresenter
        x:Name="ContentPresenter"
        Grid.Row="1"
        Margin="{TemplateBinding Padding}"
        HorizontalAlignment="Center"
        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
        AutomationProperties.AccessibilityView="Raw"
        Content="{TemplateBinding Content}"
        ContentTemplate="{TemplateBinding ContentTemplate}"
        ContentTransitions="{TemplateBinding ContentTransitions}"
        TextWrapping="Wrap"
        />
用法

<local:CustomCheckBox FontSize="100" Content="Test"  VerticalAlignment="Center" HorizontalAlignment="Center" />
如何垂直对齐XAML UWP复选框

对于需求,更好的方法是修改复选框的默认布局。默认布局是
,我们需要将其更改为
。我将分享风格的一部分,你可以直接使用它

<Grid
    x:Name="RootGrid"
    Background="{TemplateBinding Background}"
    BorderBrush="{TemplateBinding BorderBrush}"
    BorderThickness="{TemplateBinding BorderThickness}"
    CornerRadius="{TemplateBinding CornerRadius}"
    >
    <Grid.RowDefinitions>
        <RowDefinition Height="32" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Grid
        Height="32"
        HorizontalAlignment="Center"
        VerticalAlignment="Top"
        >
        <Rectangle
            x:Name="NormalRectangle"
            Width="20"
            Height="20"
            Fill="{ThemeResource CheckBoxCheckBackgroundFillUnchecked}"
            Stroke="{ThemeResource CheckBoxCheckBackgroundStrokeUnchecked}"
            StrokeThickness="{ThemeResource CheckBoxBorderThemeThickness}"
            UseLayoutRounding="False"
            />
        <FontIcon
            x:Name="CheckGlyph"
            FontFamily="{ThemeResource SymbolThemeFontFamily}"
            FontSize="20"
            Foreground="{ThemeResource CheckBoxCheckGlyphForegroundUnchecked}"
            Glyph="&#xE001;"
            Opacity="0"
            />
    </Grid>
    <ContentPresenter
        x:Name="ContentPresenter"
        Grid.Row="1"
        Margin="{TemplateBinding Padding}"
        HorizontalAlignment="Center"
        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
        AutomationProperties.AccessibilityView="Raw"
        Content="{TemplateBinding Content}"
        ContentTemplate="{TemplateBinding ContentTemplate}"
        ContentTransitions="{TemplateBinding ContentTransitions}"
        TextWrapping="Wrap"
        />
用法

<local:CustomCheckBox FontSize="100" Content="Test"  VerticalAlignment="Center" HorizontalAlignment="Center" />

如果MS在将来的版本中更改复选框的外观,我的复选框将与其他复选框不同。我不想创建一个新类型的复选框,我只想能够在一个复选框中更改对齐方式。我不想改变其他任何东西。你可以给样式x:key,并将其用于特定的复选框,它将在未来的版本中生效。而且它看起来是唯一可以编辑默认样式的方法。MSFT不能修复此问题以便VerticalContentAlignment属性工作吗?改变一个样式需要很多工作,这应该只是一个简单的属性改变…还有其他方法可以编辑默认布局,我将在上面发布。谢谢,这太完美了!谢谢你的帮助。我认为这应该是复选框的默认行为,也许MSFT有一天会修复它?如果MS在将来的版本中更改复选框的外观,我的复选框将与其他复选框不同。我不想创建一个新类型的复选框,我只想能够在一个复选框中更改对齐方式。我不想改变其他任何东西。你可以给样式x:key,并将其用于特定的复选框,它将在未来的版本中生效。而且它看起来是唯一可以编辑默认样式的方法。MSFT不能修复此问题以便VerticalContentAlignment属性工作吗?改变一个样式需要很多工作,这应该只是一个简单的属性改变…还有其他方法可以编辑默认布局,我将在上面发布。谢谢,这太完美了!谢谢你的帮助。我认为这应该是复选框的默认行为,也许MSFT有一天会修复它?