ネストされたSilverlightコントロールでCompositeTransformsを使用していますが、予期しない結果が発生しています。
XAMLの簡単な例を次に示します。
<Grid x:Name="ContainerControl" RenderTransformOrigin="0,0">
<Grid.RenderTransform>
<CompositeTransform Rotation="{Binding Rotation}"/>
</Grid.RenderTransform>
<Rectangle Width="50" Height="50" Fill="RoyalBlue" DataContext="{Binding Child}">
<Rectangle.RenderTransform>
<CompositeTransform TranslateX="{Binding XTranslation}" TranslateY="{Binding YTranslation}"/>
</Rectangle.RenderTransform>
</Rectangle>
</Grid>
非常に単純なオブジェクトの場合:
public class TestData
{
public decimal Rotation { get { return 90; } }
public TestChild Child { get { return new TestChild(); } }
}
public class TestChild
{
public decimal XTranslation { get { return 20; } }
public decimal YTranslation { get { return 30; } }
}
子オブジェクト(長方形)に平行移動変換が適用され、次に親オブジェクト(グリッド)が全体を回転すると仮定します。しかし、これは私が見ているものではありません。ネストされた変換の実行順序は何ですか?どうすれば簡単に期待どおりに動作させることができますか?