2

基本上,我有一个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 中修复。

4

3 回答 3

5

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>
于 2011-04-05T16:00:40.020 回答
2

我不确定你所说的“奇怪”是什么意思,但我建议尝试使用 LayoutTransform 而不是 RenderTransform - 这可能是问题所在。

但是请注意,LayoutTransform 比 RenderTransform 慢得多。

于 2011-04-05T15:57:44.110 回答
1

使用LayoutTransform而不是RenderTransform

http://patconroy.wordpress.com/2009/03/24/layouttransform-vs-rendertransform-in-wpf/

简单的 :)

于 2011-04-05T15:57:41.640 回答