如何相对于包装内容垂直居中 CheckBox 图形

How to vertically center CheckBox graphic with respect to wrapping content

我有以下XAML结构

<StackPanel Orientation="Horizontal">

    <CheckBox>
        <TextBlock Text="Lorem ipsum dolor sit amet etc" TextWrapping="Wrap" Width="200"/>
    </CheckBox>

    <Button>
        <SymbolIcon Symbol="Delete"/>
    </Button>

</StackPanel>

请注意删除按钮和文本(严格来说是整个 CheckBox)是如何垂直居中的,但 CheckBox 的实际图形正在做自己的事情。这是因为文本换行 - 如果它是单行文本,它将全部居中。

如何使图形与文本(复选框的内容)垂直居中?

我在几分钟后找到了答案,来自

  1. Select Visual Studio
  2. 文档大纲中的复选框
  3. 右键单击复选框 > 编辑模板 > 编辑副本
  4. 在ControlTemplate中找到以下代码

    <Grid Height="32" VerticalAlignment="Top">
        <Rectangle x:Name="NormalRectangle" Fill="{ThemeResource CheckBoxCheckBackgroundFillUnchecked}" Height="20" StrokeThickness="{ThemeResource CheckBoxBorderThemeThickness}" Stroke="{ThemeResource CheckBoxCheckBackgroundStrokeUnchecked}" UseLayoutRounding="False" Width="20"/>
        <FontIcon x:Name="CheckGlyph" FontFamily="{ThemeResource SymbolThemeFontFamily}" Foreground="{ThemeResource CheckBoxCheckGlyphForegroundUnchecked}" FontSize="20" Glyph="&#xE001;" Opacity="0"/>
    </Grid>
    
  5. 将Grid的VerticalAlignment属性由Top改为Center.