我有2个画布,canvasA和canvasB,驻留在同一个LayoutControl中。
在我的代码中,我使用来自数据库的数据使用TextEdit UserControls填充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只是一个存储父Label的当前“Top”位置的属性
我也试过
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轴)时,我不必计算并移动每个childLabel。
感谢。
答案 0 :(得分:1)
它应该像这样工作(Canvas.TopProperty
不是字符串):
Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath(Canvas.TopProperty)
Me.SetBinding(Canvas.TopProperty, topBinding)
或者这个(因为Canvas.Top是一个附加属性):
Dim topBinding As New Binding
topBinding.Source = parentLabel
topBinding.Path = New PropertyPath("(Canvas.Top)")
Me.SetBinding(Canvas.TopProperty, topBinding)