Содержание кнопки WPF VerticalAlignment на кнопке по умолчанию
Я не могу центрировать текст по вертикали на кнопке по умолчанию (стили и шаблоны не используются)
Я видел темы вроде
Текстовое содержимое в кнопке WPF не центрируется вертикально
^^ Я не устанавливаю высоту текста по крайней мере в кнопке 1.
Не уверен, что вызывает такое поведение и как эффективно избавиться от него, когда приходит локализация.
Я понимаю, что могу установить поле -ve для точного выравнивания текста, однако это может испортить ситуацию для другого языка. Является ли это некоторым ограничением, основанным на смеси выражения семейства шрифтов по умолчанию?
Любая помощь с этим была бы великолепна. Кажется тривиальным, но, кажется, не могу найти достойное объяснение того, что вызывает такое поведение.
Код XAML выглядит следующим образом:
<Window x:Class="TestButton.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="ButtonFFAH" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" VerticalContentAlignment="Center"/>
<Button Content="ButtonAH" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"
Margin="80,0,0,0" Height="15.627" VerticalContentAlignment="Center"/>
</Grid>
2 ответа
Очевидное вертикальное смещение связано с тем, что все виды акцентов или других диакритических знаков увеличивают общую высоту шрифта. Хотя фактическое содержимое Button может не содержать таких символов, вертикальное выравнивание должно учитывать это для обеспечения общего выравнивания базовой линии с другими кнопками с таким же "внешним" выравниванием, например, в той же строке сетки.
Вот как это работает внутри. Если вы хотите больше контроля, просто заполните содержимое кнопки более настраиваемыми элементами, такими как строка. Как это:
<Button HorizontalAlignment="Left" VerticalAlignment="Top" Width="75"
Margin="80,0,0,0" Height="15.627" VerticalContentAlignment="Center">
<TextBlock VerticalAlignment="Center">ButtonAH</TextBlock>
</Button>