答案 0 :(得分:0)
由于标签是子对象,它们将与父对象一起旋转 - 这就是它们的目的。
您必须将父旋转的反向应用于标签 - 确保保持位置偏移正确。通过使用第二个属性来保持逆并将其绑定到标签的旋转变换,这将是最简单的。
因此每个TextBlock都需要以下内容:
<TextBlock.LayoutTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding InverseParentAngle}"/>
</TextBlock.LayoutTransform>
中心属性确保旋转位于标签的中心附近,InverseParentAngle
是画布旋转的负值。
您可以通过取消值的转换器将角度绑定到画布的角度,而不是必须维护第二个属性。这可能是一种更清洁的方法。
<TextBlock.LayoutTransform>
<RotateTransform CenterX="0.5" CenterY="0.5" Angle="{Binding (Canvas.Angle),RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Canvas}}, Converter={StaticResource=InverseConverter}"/>
</TextBlock.LayoutTransform>