WPF转换 - 旋转和切换宽度/高度?

时间:2011-04-05 15:51:52

标签: wpf custom-controls rotatetransform rendertransform

基本上,我有一个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 个答案:

答案 0 :(得分:3)

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 :(得分:1)

答案 2 :(得分:1)

我不确定'奇异'是什么意思,但我建议尝试使用LayoutTransform而不是RenderTransform - 这可能就是问题所在。

但请注意,LayoutTransform明显慢于RenderTransform。