伙计我使用画布作为ItemsPanelTemplate并将其绑定到包含典型行起点和终点的行列表
<ItemsControl ItemsSource="{Binding Path = LineList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
现在。我想将中心点移动到画布的中间而不是左上角。我面前的选项很少
我知道如何通过第一种方法来实现,但是当我尝试第二种方法时,它并没有改变坐标系。这是为什么?我刚刚在我的代码中替换了答案,如下所示。我错过了什么吗?
****更新****:以下代码正常运行
<ItemsControl ItemsSource="{Binding Path = LineList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
答案 0 :(得分:5)
示例中ScaleTransform的CenterX
和CenterY
属性实际上并不移动Canvas。此外,LayoutTransform无论如何都会忽略翻译(请参阅备注here)。您可以使用适当的RenderTransform
作为Canvas:
<ItemsPanelTemplate>
<Canvas>
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="2" ScaleY="2"/>
<TranslateTransform
X="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=Canvas}}"
Y="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType=Canvas}}"/>
<ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
</TransformGroup>
</Canvas.RenderTransform>
</Canvas>
</ItemsPanelTemplate>