【问题标题】:Aligning components with each other in WPF在 WPF 中对齐组件
【发布时间】:2012-12-12 14:34:10
【问题描述】:

WPF 应用程序由任意大小的统一网格组成。网格中的每个单元格都包含一个画布。每个画布都是拖放操作的目标。

当我拖动另一个画布并将其放到网格内的画布上时,我希望拖动的画布(源)和目标画布的左上角对齐,基本上将源放在目标的顶部。我正在寻找的行为是对齐网格效果。

目前,当我使用 element.GetValue(Canvas.LeftProperty) 时,结果为 NaN。问题是确定网格内画布的角位置,但相对于整个窗口。我更喜欢使用网格,因为它会随着窗口大小自动调整大小。

即使网格大小发生变化,是否也可以获取网格内画布的实际位置,或者指定要与网格内的另一个画布对齐的画布?

【问题讨论】:

  • 试试Point p = yourCanvas.TranslatePoint(new Point(0, 0), Window.GetWindow(yourCanvas));
  • 你应该可以通过TransformToAncestor得到相对位置。

标签: wpf vb.net xaml


【解决方案1】:

通过指定画布的 top 和 left 属性将每个画布绘制到另一个画布上解决了这个问题,我不得不刮擦网格。我使用

指定了每个画布的位置
Canvas.SetLeft(Me, position.X)
Canvas.SetTop(Me, position.Y) 

其中Me 是画布的一个实例。

现在很容易获得每个画布的 top 和 left 属性。现在唯一的问题是我必须手动调整每个画布的大小。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 2013-08-23
    • 2015-10-25
    • 2016-02-05
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多