1

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

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

这段代码:

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

...呈现如下:

在此处输入图像描述

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

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

4

1 回答 1

6

您正在寻找一个 LayoutTransform。这是一篇很棒的博客文章,介绍了如何在 Windows 8 中实现这一点。

看起来这个来自 cookplex 的工具包已经包含了一个!您可以使用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>
于 2013-10-18T20:30:30.540 回答