2011-04-05 9 views
1

기본적으로 에 추가 된 FooControl (나는 이 아니고은 높이/너비를 명시 적으로 설정했습니다.)가 있습니다.WPF 변환 - 회전 및 전환 너비/높이?

<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

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

난 당신이 '기괴한'가 무슨 뜻인지 잘 모르겠지만, 내가 시도으로 RenderTransform 대신 LayoutTransform을 사용하는 것이 좋을 것 - 그것은 아마 문제입니다.

그러나 LayoutTransform은 RenderTransform보다 상당히 느립니다.