WPF在Canvas布局中的锚定/停靠行为

时间:2011-03-28 09:53:23

标签: c# .net wpf xaml

我在Canvas布局上安排了很多元素,实际上元素代表了一个交互式流程图。在应用转换时,我需要对某些元素进行相对转换。

特别是我需要将一些元素锚定或停靠到其父元素。我找到了不同的解决方案,但我不知道他们是否以最优雅的方式解决了我的问题。

以下是一个例子:

<Line X1="80" X2="800" Y1="730" Y2="730"/>
<Polygon Points="0,30 40,0 40,60" Canvas.Left="48" Canvas.Top="700"/>

Polygon绘制一个三角形,我想让它停靠在线的左侧。这意味着,当将线条平移到新位置或向下缩放时,多边形应随之移动。

这可能吗?

1 个答案:

答案 0 :(得分:3)

将它们放在自己的画布上,这样你就可以绝对定位外部画布,并将内部材料放在一起。

像这样:

<Canvas>
    <Line X1="60" X2="820" Y1="60" Y2="760"> <!--some other line--> </Line>
    <Canvas Canvas.Left="48" Canvas.Top="700">
        <Polygon Points="0,30 40,0 40,60"/>
        <Line X1="32" X2="752" Y1="30" Y2="30"/>
    </Canvas>        
</Canvas>