XAML 旋转90度后文本被截断

sf6xfgos  于 2023-08-01  发布在  其他
关注(0)|答案(2)|浏览(82)

我有一个TextBlock,我想在一个30px宽的用户控件中垂直显示。TextBlock控件已使用RenderTransform旋转90°。
当我将其与30px的翻译结合时,旋转似乎发生得很好,但TextBlock的实际内容被截断在似乎是30px的位置。
看起来文本是以父级的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。

的数据
在Expression Blend和Emulator中也会出现相同的问题。

zzzyeukh

zzzyeukh1#

我已经想出了一种方法来获得预期的布局,但它似乎有点黑客。
通过在TextBlock上设置一个等于TextBox宽度(50 px)和父宽度(30 px)之差的负左边距(-20px),可以垂直显示全文。
例如:

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

字符串

4xrmg8kj

4xrmg8kj2#

请改用LayoutTransform。

相关问题