我正在使用 ToggleSwitch 控制元件在應用程式中顯示 2 個專有選項。不幸的是,當 FontSize 增加時,“內容”部分似乎沒有垂直居中對齊。為了驗證這個問題,我嘗試了一個簡單的 ContentPresenter,即使我提供了 VerticalAlignment、VerticalContentAlignment 等。
不確定這是一個未解決的問題還是我在這里遺漏了什么?

白線在這里顯示影像的中心。這只是一種情況,但隨著字體大小的不同,對齊方式也會發生變化。因此,我們無法提供填充/邊距,因為它對于各種 FontSizes 是不同的。
<Page
x:Class="TestApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:TestApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="Green">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="30">
<ToggleSwitch Background="Red" OnContent="ABRA" OffContent="KADABRA" FontSize="72"/>
<ContentPresenter Background="Red" Content="KADABRA" FontSize="58"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalAlignment="Center" VerticalContentAlignment="Center" />
</StackPanel>
</Page>
作為更新:我還嘗試如下修改 ContentPresenter 樣式并將其應用于上述 ContentPresenter (盡管仍然沒有變化)
<Style x:Key="ContentPresenterStyle1" TargetType="ContentPresenter">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
uj5u.com熱心網友回復:
此問題是由字體度量引起的。字體度量決定了字體上方/字體下方有多少空間,以及字符之間有多少空間。不同的字體大小和字體系列將有不同的指標。
目前,我們對此無能為力。使用帶邊距的 TranslateTransform 或 TextBlock 是一種解決方法。另一種可能的方法是使用 Win2D 直接繪制文本,但它可能會很復雜。
uj5u.com熱心網友回復:
可能不是理想的答案;但你總是可以使用 RenderTransform 來調整它以適應你的喜好。
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Spacing="30" >
<ToggleSwitch Background="Red" >
<ToggleSwitch.OffContent>
<TextBlock Text="KADABRA" FontSize="72" VerticalAlignment="Center">
<TextBlock.RenderTransform>
<TranslateTransform Y="-5"/>
</TextBlock.RenderTransform>
</TextBlock>
</ToggleSwitch.OffContent>
<ToggleSwitch.OnContent>
<TextBlock Text="KADABRA" FontSize="72" VerticalAlignment="Center">
<TextBlock.RenderTransform>
<TranslateTransform Y="-5"/>
</TextBlock.RenderTransform>
</TextBlock>
</ToggleSwitch.OnContent>
</ToggleSwitch>
</StackPanel>

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/443429.html
