【发布时间】:2012-10-24 12:49:05
【问题描述】:
在Canvas 中定位元素的常见问题是“如何定位元素的中心(而不是左上角)”。
- WPF: Resizing a circle, keeping the center point instead of TopLeft?
- WPF Center Ellipse at X, Y
- WPF element positioning on a Canvas
提出了几种解决方案,但它们都有缺点。
最简单的解决方案是在以编程方式设置Canvas.Left 和Canvas.Top 属性时适应元素大小。这有效,但只有一次。此解决方案不支持绑定,并且在更改元素大小时会中断。您也不能使用
Canvas.Left 或Canvas.Top
另一组解决方案涉及使用RenderTransform 或Margin 的转换转换。这些解决方案需要将一些属性绑定到-0.5 * Width 或-0.5 * Height。此类绑定需要创建自定义 ValueConverter,并且仅使用 XAML 是不可能创建的。
那么,有没有一种简单的方法可以在画布内定位元素,使其Canvas.Left 和Canvas.Top 对应元素的中心,并且大小和位置属性都可以绑定到其他一些属性?强>
【问题讨论】: