【问题标题】:TextBlock filling vertical spaceTextBlock 填充垂直空间
【发布时间】:2010-11-23 03:59:41
【问题描述】:

我想创建一个垂直的(-90 变换角度)TextBlock(或其他一些带有文本的元素,仅用于显示),但我希望该元素填充它所包含的垂直空间,但是有一个定义的水平量(我使用垂直和水平术语而不是高度和宽度,因为当我让TextBlock 垂直时它被交换了),并让它与容器的左侧对齐。

我相信我了解如何使用RenderTransformLayoutTransform 使TextBlock 垂直化。但是,我似乎无法让“停靠”正常工作,每当我更改容器的垂直方向时,TextBlock 会增加水平方向而不是垂直方向。

这是我所拥有的:

<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 在水平方向而不是所需的垂直方向上增加。

【问题讨论】:

    标签: wpf xaml transform textblock


    【解决方案1】:

    如果我对您的理解正确,那么这应该为您指明正确的方向:

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

    关键是使用LayoutTransform,而不是RenderTransform。这将确保在转换发生后发生另一个布局传递。否则,布局系统将使用原始边界矩形来布局TextBlock

    除此之外,我刚刚摆脱了 Blend 生成的所有杂物,看看发生了什么。结果如下:

    alt text http://img187.imageshack.us/img187/1189/screenshottbv.png

    【讨论】:

      猜你喜欢
      • 2018-10-04
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2013-03-12
      • 2015-05-16
      • 1970-01-01
      • 2014-06-16
      相关资源
      最近更新 更多