WPF Transformations - Вращение и переключение ширины / высоты? - PullRequest
1 голос
/ 05 апреля 2011

По сути, у меня есть FooControlне явно установил высоту / ширину), добавленное к Grid.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <FooControl x:Name="HWFoo" Content="HelloWorld" Grid.Row="0">
        <FooControl.RenderTransform>
            <TransformGroup>
                <RotateTransform Angle="270" />
                <TranslateTransform Y="{Binding ActualWidth, ElementName=HWFoo}" />
            </TransformGroup>
        </FooControl.RenderTransform>
    </FooControl>
</Grid>

Но теперь проблема в том, что FooControl заполняет весь ряд, и когда он трансформируется, он выглядит довольно странно (из-за своей высоты / ширины).


FooControl - это пользовательский элемент управления. Так что я делаю с ArrangeOverride или MeasureOverride? Или я делаю что-то не так, что можно исправить в XAML.

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

1 - Использовать LayoutTransform
2 - Установите HorizontalAlignment влево или вправо, чтобы предотвратить растяжение

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <FooControl x:Name="HWFoo" Content="HelloWorld" Grid.Row="0" HorizontalAlignment="Left">
        <FooControl.LayoutTransform>
            <TransformGroup>
                <RotateTransform Angle="270" />
                <TranslateTransform Y="{Binding ActualWidth, ElementName=HWFoo}" />
            </TransformGroup>
        </FooControl.LayoutTransform>
    </FooControl>
</Grid>
1 голос
/ 05 апреля 2011

Я не уверен, что вы подразумеваете под 'странным', но я бы посоветовал попробовать использовать LayoutTransform вместо RenderTransform - в этом, вероятно, проблема.

Следует отметить, что LayoutTransform значительно медленнее, чемRenderTransform.

1 голос
/ 05 апреля 2011
...