Wpf 绑定到画布。元素移动时左键断开
我有以下画布,其中包含3个元素:Wpf 绑定到画布。元素移动时左键断开,wpf,xaml,binding,runtime,Wpf,Xaml,Binding,Runtime,我有以下画布,其中包含3个元素: <Rectangle x:Name="start" Canvas.Left="20" Canvas.Top="100" Width="25" Height="25" Fill="Pink"/> <Line X1="{Binding ConverterParameter=X, ElementName=start, Converter={StaticResource CanvasPositionC
<Rectangle x:Name="start" Canvas.Left="20" Canvas.Top="100" Width="25" Height="25" Fill="Pink"/>
<Line X1="{Binding ConverterParameter=X, ElementName=start, Converter={StaticResource CanvasPositionConverter}}"
Y1="{Binding ConverterParameter=Y, ElementName=start, Converter={StaticResource CanvasPositionConverter}}"
X2="{Binding ConverterParameter=X, ElementName=root, Converter={StaticResource CanvasPositionConverter}}"
Y2="{Binding ConverterParameter=Y, ElementName=root, Converter={StaticResource CanvasPositionConverter}}"
Stroke="Red" StrokeThickness="2" />
<!--I have something external that controls the position of this dockpanel on the canvas so on runtime it may move-->
<DockPanel x:Name="root" Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" />
它在启动时起作用,这意味着绑定的初始值是正确的(如Snoop所示);问题是dockpanel在运行时正在移动,但绑定不会更新到dockpanel的新位置。基本上我想要一条线,连接一个静态的形状到一个移动的形状。(移动的形状实际上是在一个装饰器中,用户可以拖动它来移动)您的绑定不会更新,因为您没有绑定到
根元素
或开始
元素的任何属性,而是通过绑定转换器直接从源对象检索属性值
幸运的是,您不需要那个转换器。只需编写如下绑定:
<Line X1="{Binding Path=(Canvas.Left), ElementName=start}"
Y1="{Binding Path=(Canvas.Top), ElementName=start}"
X2="{Binding Path=(Canvas.Left), ElementName=root}"
Y2="{Binding Path=(Canvas.Top), ElementName=root}"
Stroke="Red" StrokeThickness="2" />
请注意,附加属性的名称应该放在括号中。哦,我确实先尝试了,但使用了{Binding Path=Canvas.Left,ElementName=start},但它不起作用,所以我认为我需要一个转换器。所以,(Canvas.Left)上的括号不见了。。。谢谢
<Line X1="{Binding Path=(Canvas.Left), ElementName=start}"
Y1="{Binding Path=(Canvas.Top), ElementName=start}"
X2="{Binding Path=(Canvas.Left), ElementName=root}"
Y2="{Binding Path=(Canvas.Top), ElementName=root}"
Stroke="Red" StrokeThickness="2" />