Почему отображается только половина моего ярлыка? [WPF] - PullRequest
1 голос
/ 17 июля 2009

У меня есть сетка в окне WPF, которая содержит метку в первом столбце. Я применил SkewTransform для метки. Если я уменьшу ширину столбца, метка отобразится наполовину

Скриншот

альтернативный текст 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 Ответ

2 голосов
/ 17 июля 2009

Сделайте LayoutTransform вместо RenderTransform.

В WPF RenderTransforms выполняются на элементах управления после их размещения.

В вашем случае, Label обрезается сначала по ширине столбца; затем применяется RenderTransform (вращение является единственным, который делает что-либо), в результате чего получается странный Label.

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