2011-04-05 64 views
1

基本上,我有一個FooControl(我沒有而不是明確設置高度/寬度)添加到GridWPF轉換 - 旋轉和切換寬度/高度?

<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

我不知道你所說的「離奇」的意思,但我建議嘗試使用LayoutTransform代替的RenderTransform的 - 這可能是問題。

但應注意LayoutTransform比RenderTransform慢得多。