在Silverlight中水平和垂直居中文本

时间:2010-03-18 17:26:59

标签: c# silverlight

我正在开发一个C#Silverlight应用程序,它需要将一些文本旋转90度CCW,并使其成为100px x 221px图像的中心。旋转部分在设计视图中很容易做到,但是文本居中是一场噩梦。 (我使用的是无法更改或调整大小的16px字体)

我的文字是动态的,可以是一行或两行。当它是两行长时我可以很好地居中......但如果它只有一行长,我就无法居中。到目前为止,中心的唯一方法是调整框的大小并将其移动到右侧。

有没有一种简单的方法可以做到这一点?

alt text http://www.freeimagehosting.net/uploads/f0435a8c65.png

1 个答案:

答案 0 :(得分:0)

答案很简单:

<Grid x:Name="LayoutRoot">
    <Image x:Name="Background" Source="Background.png" Stretch="Fill"/>
    <TextBlock x:Name="Title"
        Margin="-19.75,68.25,-21.25,67.806" Text="Here is some text to fill this up"
        Foreground="#FF00A33D"
        FontSize="22" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto"
        TextAlignment="Center" TextWrapping="Wrap"
    >
        <TextBlock.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="-90"/>
                <TranslateTransform/>
            </TransformGroup>
        </TextBlock.RenderTransform>
    </TextBlock>
</Grid>

然后在cs文件中设置更改文本时的对齐

Title.VerticalAlignment = VerticalAlignment.Bottom;