TextBlock文本在旋转90度后被截断

时间:2012-02-26 02:59:25

标签: windows-phone-7 xaml

我有一个TextBlock,我希望在30px宽的用户控件中垂直显示。使用RenderTransform将TextBlock控件旋转90°。

当我将它与30px的翻译结合起来时,旋转似乎很正常,但TextBlock的实际内容在看起来像是30px时会被截断。

看起来Text正在以父对象的30px宽度呈现,然后进行转换。

<UserControl x:Class="Xyz.Controls.FooControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="300" d:DesignWidth="30">

    <Grid x:Name="LayoutRoot">
        <Grid Name="barGrid" Background="#BFFFFFFF">
            <Ellipse Width="30" Height="30" Fill="Red" HorizontalAlignment="Center" VerticalAlignment="Top" />
            <TextBlock Name="barText" Text="88.8°" 
                       Width="50" 
                       Height="30" 
                       Foreground="#FF3535C4">
                <TextBlock.RenderTransform> 
                    <CompositeTransform Rotation="90" TranslateX="30"/> 
                </TextBlock.RenderTransform>
            </TextBlock>
        </Grid>

    </Grid>
</UserControl>

在Visual Studio的截图中,预期文本仅显示29px。 Xaml TextBlock content truncated at parent width

Expression Blend和模拟器中出现相同的问题。

1 个答案:

答案 0 :(得分:2)

我找到了一种获得预期布局的方法,但它看起来有点像黑客。

通过在TextBlock(-20px)上设置负左边距等于TextBox宽度(50px)与父节点宽度(30px)的差值,全文垂直显示。

E.g。

<TextBlock Name="barText" Text="88.8°" 
                   Width="50" 
                   Height="30" 
                   Foreground="#FF3535C4"
                   Margin="0,0,-20,0">
            <TextBlock.RenderTransform> 
                <CompositeTransform Rotation="90" TranslateX="30"/> 
            </TextBlock.RenderTransform>
        </TextBlock>