Как сделать вращение вокруг центра управления в XAML

Я хочу сделать кнопку поворота на 90 градусов, но она обрезается, потому что она вращается вокруг (0,0). Как заставить его вращаться вокруг центра, если я не знаю, что это не ширина в пикселях (это шаблон для многих кнопок)

3 ответа

Решение
<Button ...>
  <Button.LayoutTransform>
    <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90"/>
  </Button.LayoutTransform>
</Button>

Вы должны установить RenderTransformOrigin элемента управления на 0,5, 0,5.

напр.:

<Button RenderTransformOrigin="0.5, 0.5">
    <RepeatButton.RenderTransform>
        <RotateTransform Angle="90"/>
    </RepeatButton.RenderTransform>
</RepeatButton>

Насколько я понимаю, происхождение не имеет отношения к LayoutTransform.

MSDN говорит:

Настройка преобразования обеспечивает мощные возможности масштабирования и поворота. Однако LayoutTransform игнорирует операции TranslateTransform. Это связано с тем, что поведение системы компоновки для дочерних элементов FrameworkElement автоматически корректирует любые смещения для положения масштабированного или повернутого элемента в компоновке и системе координат родительского элемента.

и следующее "правильно" вращает кнопку.

<Grid ShowGridLines="True">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition Width="Auto"></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Button Grid.Row="1" Grid.Column="1">Excessively Long Button Still Ok
        <Button.LayoutTransform>
            <RotateTransform Angle="90" />
        </Button.LayoutTransform>
    </Button>
</Grid>
Другие вопросы по тегам