如何获得容器(即网格)以适应其内容的旋转大小?

时间:2013-10-18 20:22:26

标签: xaml windows-8 windows-runtime windows-store-apps windows-8.1

(Windows 8.1,Windows应用商店应用)

我想将旋转的文本放在容器(例如Grid)中,让容器从旋转的文本中获取其尺寸。然而...

此代码:

<Canvas Background="Gray">

    <Grid
        Canvas.Left="100"
        Canvas.Top="100"
        Background="LightGray">
        <TextBlock Text="Text rotated 270º">
            <TextBlock.RenderTransform>
                <RotateTransform Angle="270" />
            </TextBlock.RenderTransform>
        </TextBlock>
    </Grid>

<Canvas>

......渲染如下:

enter image description here

我希望网格在应用旋转后从TextBlock获取宽度和高度。但是,在应用旋转之前,网格似乎从TextBlock获取其尺寸。

如何获得容器(即网格)以适应其内容的旋转大小(即TextBlock)?

1 个答案:

答案 0 :(得分:6)

您正在寻找LayoutTransform。关于如何在Windows 8中实现这一点,这是一个很棒的blog post

来自cookplex的this toolkit看起来已经有了!您可以使用LayoutTransformControl。该工具包可通过Nuget获得。

您可以将其添加为控件的内容,并将内容放入其中。

<Grid
    Canvas.Left="100"
    Canvas.Top="100"
    Background="LightGray">
    <controls:LayoutTransformControl x:Name="transformControl">
        <controls:LayoutTransformControl.Transform>
            <RotateTransform x:Name="rotateTransform" Angle="270"/>
        </controls:LayoutTransformControl.Transform>
        <TextBlock Text="Hello LayoutTransformControl" />
    </controls:LayoutTransformControl>
 </Border>