Wpf 在两个画布之间绑定UserControls Canvas.GetTop

Wpf 在两个画布之间绑定UserControls Canvas.GetTop,wpf,vb.net,wpf-controls,Wpf,Vb.net,Wpf Controls,我有两张画布,画布A和画布B,位于同一布局控制范围内 在我的代码中,我使用数据库中的数据用TextEdit用户控件填充canvasA。这些是父标签 子标签也从数据库中填充,但在canvasB中。这些子项位于与其父项相同的Canvas.Top位置,但计算并设置Canvas.Left位置 我想知道是否有办法将canvasA中父标签的顶部位置与canvasB中相应的子标签绑定在一起。我试过: Dim topBinding As New Binding topBinding.Source = paren

我有两张画布,画布A和画布B,位于同一布局控制范围内

在我的代码中,我使用数据库中的数据用TextEdit用户控件填充canvasA。这些是父标签

子标签也从数据库中填充,但在canvasB中。这些子项位于与其父项相同的Canvas.Top位置,但计算并设置Canvas.Left位置

我想知道是否有办法将canvasA中父标签的顶部位置与canvasB中相应的子标签绑定在一起。我试过:

Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath("topPosition")
topBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
topBinding.IsAsync = True

Me.SetBinding(Canvas.TopProperty, topBinding)
这些代码位于childLabel.Loaded中,并传入parentLabel。topPosition只是存储父标签当前“顶部”位置的属性

我也试过了

Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath("Canvas.TopProperty")
topBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
topBinding.IsAsync = True

Me.SetBinding(Canvas.TopProperty, topBinding)
而且

Me.SetBinding(Canvas.TopProperty, Canvas.GetTop(parentTextEdit))
但什么都不管用。所有子项都处于“顶部”位置的0

我求助于使用Canvas.SetTop(childLabel、parentLabel.topPosition)

有没有一种方法可以让装订工作做到这一点?因此,以后当我需要移动父标签时(仅Y轴),我不必计算和移动每个子标签

谢谢。

它应该是这样工作的(如果
Canvas.TopProperty
不是字符串):

或者此属性(如Canvas.Top是附加属性):


为什么不使用两列网格呢?
Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath(Canvas.TopProperty)
Me.SetBinding(Canvas.TopProperty, topBinding)
Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath("(Canvas.Top)")
Me.SetBinding(Canvas.TopProperty, topBinding)