为什么只显示我标签的一半? [WPF]

时间:2009-07-17 06:58:26

标签: wpf label

我在WPF窗口中有一个网格,并在其第一列中包含一个标签。我已经为标签应用了SkewTransform。如果我减小列宽,标签会显示一半

Screenshot

alt text http://freephotoupload.net/images/673_Lable.jpg

我希望它显示Prashant,我的主要目的是减少标签旁边的额外空白

XAML代码

    <Grid ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="146.334" />
                <ColumnDefinition Width="94.666" />
            </Grid.ColumnDefinitions>
            <Label Margin="0" VerticalAlignment="Center" Width="Auto" Name="label1" RenderTransformOrigin="0.5,0.5" Content="Prashant">
                <Label.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform ScaleX="1" ScaleY="1"/>
                        <SkewTransform AngleX="0" AngleY="0"/>
                        <RotateTransform Angle="-90"/>
                        <TranslateTransform X="0" Y="0"/>
                    </TransformGroup>
                </Label.RenderTransform>
    </Label>
</Grid>

任何建议请....

1 个答案:

答案 0 :(得分:2)

执行LayoutTransform而不是RenderTransform

在WPF中,RenderTransforms在控件布局后执行。

在您的情况下,Label首先被列宽缩短;然后,应用RenderTransform(旋转是唯一可以执行任何操作的旋转),从而导致奇怪的Label

在布局控件之前完成LayoutTransform

像这样:

<Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="146.334" />
        <ColumnDefinition Width="94.666" />
    </Grid.ColumnDefinitions>
    <Label 
        Name="label1" 
        Content="Prashant"
        Margin="0"  
        Width="Auto" 
        VerticalAlignment="Center"
        RenderTransformOrigin="0.5,0.5">
        <Label.LayoutTransform>
            <TransformGroup>
                <ScaleTransform ScaleX="1" ScaleY="1"/>
                <SkewTransform AngleX="0" AngleY="0"/>
                <RotateTransform Angle="-90"/>
                <TranslateTransform X="0" Y="0"/>
            </TransformGroup>
        </Label.LayoutTransform>
    </Label>
</Grid>