如何相对于包装内容垂直居中 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 的实际图形正在做自己的事情。这是因为文本换行 - 如果它是单行文本,它将全部居中。
如何使图形与文本(复选框的内容)垂直居中?
我在几分钟后找到了答案,来自 。
- Select Visual Studio
文档大纲中的复选框
- 右键单击复选框 > 编辑模板 > 编辑副本
在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="" Opacity="0"/>
</Grid>
将Grid的VerticalAlignment
属性由Top
改为Center
.
我有以下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 的实际图形正在做自己的事情。这是因为文本换行 - 如果它是单行文本,它将全部居中。
如何使图形与文本(复选框的内容)垂直居中?
我在几分钟后找到了答案,来自
- Select Visual Studio 文档大纲中的复选框
- 右键单击复选框 > 编辑模板 > 编辑副本
在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="" Opacity="0"/> </Grid>
将Grid的
VerticalAlignment
属性由Top
改为Center
.