2

TextBlock垂直(-90変換角度)の(または表示専用のテキストを含む他の要素)を作成したいのですが、その要素が含まれている垂直スペースを埋める必要がありますが、水平方向の量は定義されています(垂直方向に移動すると交換されるため、高さと幅の代わりに垂直方向と水平方向の用語を使用していTextBlockます)、コンテナの左側に揃えます。

またはTextBlockを使用して垂直に移動する方法を理解していると思います。ただし、コンテナの垂直方向のアスペクトを変更すると、垂直方向ではなく水平方向のアスペクトが増加するため、「ドッキング」が正しく機能するようには見えません。RenderTransformLayoutTransformTextBlock

これが私が持っているものです:

<UserControl
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"
x:Class="AttendanceTracker.StudentView"
x:Name="UserControl" Height="172.666" Width="417.333">

<StackPanel x:Name="LayoutRoot" Orientation="Horizontal">
    <Border BorderBrush="Black" BorderThickness="1" RenderTransformOrigin="0.5,0.5" Background="#52FFFFFF" Width="139.667">
        <TextBlock Text="My Title" TextWrapping="Wrap" FontSize="18.667" TextAlignment="Center" Foreground="White" Margin="-58.509,68.068,49.158,70.734" Background="Black" RenderTransformOrigin="0.5,0.5" Width="147.017" d:LayoutOverrides="Height">
            <TextBlock.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="-90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBlock.RenderTransform>
        </TextBlock>
    </Border>
</StackPanel>

UserControlの高さを変更するとTextBlock、目的の垂直方向のアスペクトではなく、水平方向のアスペクトが増加することがわかります。

4

1 に答える 1

6

私があなたを正しく理解しているなら、これはあなたを正しい方向に向けるはずです:

<StackPanel Orientation="Horizontal">
    <TextBlock Background="Red" Text="My Title">
        <TextBlock.LayoutTransform>
            <TransformGroup>
                <RotateTransform Angle="90"/>
            </TransformGroup>
        </TextBlock.LayoutTransform>
    </TextBlock>
</StackPanel>

鍵はLayoutTransformではなくを使用することRenderTransformです。これにより、変換が発生した後に別のレイアウト パスが発生することが保証されます。それ以外の場合、レイアウト システムは元の境界四角形を使用して をレイアウトしTextBlockます。

それを超えて、Blend で生成されたクラフトをすべて取り除き、何が起こっているのかを確認しました。結果は次のとおりです。

代替テキスト http://img187.imageshack.us/img187/1189/screenshottbv.png

于 2009-08-26T21:13:31.593 に答える