Горизонтальное выравнивание в управлении, кажется, игнорируется на всех, кроме последнего элемента - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть пользовательская кнопка-переключатель, основанная на кнопке-переключателе:

<Style TargetType="{x:Type local:ToolbarRadioButton}" BasedOn="{StaticResource {x:Type ToggleButton}}">
   <Setter Property="Width" Value="60"/>
   <Setter Property="Height" Value="60"/>
   <Setter Property="ContentTemplate">
       <Setter.Value>
           <DataTemplate>
               <StackPanel Orientation="Vertical">
                   <iconPacks:PackIconModern Kind="{Binding TbIcon, RelativeSource={RelativeSource AncestorType=RadioButton}}"
                                             Height="30" Width="35" HorizontalAlignment="Center"/>
                   <TextBlock Text="{Binding TbText, RelativeSource={RelativeSource AncestorType=RadioButton}}" FontSize="12"
                              HorizontalAlignment="Center"/>
               </StackPanel>
           </DataTemplate>
       </Setter.Value>
   </Setter>
</Style>

Я использую этот элемент управления для создания четырех кнопок-переключателей / переключателей.Я горизонтально отцентрировал элементы в табличке данных, но в итоге получаю следующее:

enter image description here

Прогноз и его иконка кажутся центрированными, но остальныечастично выровнены по левому краю.Все они используют один и тот же элемент управления, поэтому разве они не должны быть центрированы?

РЕДАКТИРУЕТСЯ ДЛЯ ЯРКОСТИ: Неважно, в каком порядке я поставил их, прогноз всегда корректен.В тексте нет пробелов и в изображениях нет пробелов, и все изображения имеют размер в соответствии с определенным выше элементом управления.Вот часть реализации на случай, если она будет полезна, хотя все они одинаковы:

<StackPanel Orientation="Horizontal" Grid.Column="0" Grid.Row="0">
    <customs:ToolbarRadioButton TbText="Day" TbIcon="CalendarDay" GroupName="calViewType" x:Name="dayOnOff"/>
    <customs:ToolbarRadioButton TbText="Week" TbIcon="CalendarWeek" GroupName="calViewType" x:Name="weekOnOff"/>
    <customs:ToolbarRadioButton TbText="Month" TbIcon="CalendarMonth" GroupName="calViewType" x:Name="monthOnOff" IsChecked="True"/>
    <customs:ToolbarRadioButton TbText="Forecast" TbIcon="PeopleMultiple" GroupName="calViewType" x:Name="forecastOnOff"/>
</StackPanel>

1 Ответ

0 голосов
/ 09 декабря 2018

Для будущих читателей: я разобрался с ответом, покопавшись в документации по кнопке.На кнопках есть свойство HorizontalContentAlignment (и, разумеется, вертикальное), которое, очевидно, необходимо настроить для выравнивания визуального содержимого.Вы не можете явно установить свойство HorizontalAlignment элемента, который является содержимым;видимо, кнопка хочет сделать это для вас.

...