如何在XAML中围绕控制中心旋转

我想旋转button到90度,但它会被剪裁,因为它旋转arount(0,0)。 如果我不知道它的像素宽度(这是许多button的模板)如何使其围绕中心旋转,

 <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说:

设置变换提供了强大的缩放和旋转function。 但是,LayoutTransform忽略了TranslateTransform操作。 这是因为FrameworkElement的子元素的布局系统行为会将缩放或旋转元素的位置的任何偏移量自动更正到父元素的布局和坐标系中。

并且以下“正确”旋转button。

 <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>