我正在使用嵌套的Silverlight控件中的复合变换,但出现了意外结果。
这是一个简化的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; } }
}
我会假设子对象(矩形)将应用其平移变换,然后父对象(网格)将旋转整个物体。但是,我没有看到这种情况。嵌套变换的执行顺序是什么?如何轻松地强制它按照我的期望工作?