Wpf 元素与另一元素的绑定位置';s边界框
我有一个包含在画布中的形状,我希望在前面提到的形状边界框的底部附加一个标签。 在设计时,这很简单,但是形状在运行时是可以拖动的,标签应该根据它移动。 我可以用我用来拖动形状的相同的Shape_Mouse*方法“手动”修改标签位置,但我认为某种绑定会更干净,如果我想在运行时轻松添加元素并“附加”到形状,可能需要这样做 XAMLWpf 元素与另一元素的绑定位置';s边界框,wpf,Wpf,我有一个包含在画布中的形状,我希望在前面提到的形状边界框的底部附加一个标签。 在设计时,这很简单,但是形状在运行时是可以拖动的,标签应该根据它移动。 我可以用我用来拖动形状的相同的Shape_Mouse*方法“手动”修改标签位置,但我认为某种绑定会更干净,如果我想在运行时轻松添加元素并“附加”到形状,可能需要这样做 XAML <Canvas x:Name="canv" HorizontalAlignment="Center" Height="531" Margin="10,
<Canvas x:Name="canv" HorizontalAlignment="Center" Height="531"
Margin="10,10,0,0" VerticalAlignment="Top" Width="947"
Background="#FFCDF3EB">
<Ellipse Fill="#FFF3A7A7" Height="113" Canvas.Left="120" Stroke="Black"
Canvas.Top="173" Width="125"/>
<Label Content="Label" Height="39" Canvas.Left="120" Canvas.Top="286"
Width="125"/>
</Canvas>
那么,有没有一种方法可以轻松地将元素a的位置绑定到WPF中元素B边界框的底部 最简单的方法是将
画布
和标签
放入用户控件
。您的UserControl
XAML看起来像这样:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Canvas Grid.Row="0" ... />
<TextBlock Grid.Row="1" Text="Some description" ... />
</Grid>
现在,当用户移动UserControl
时,Canvas
和标签将一起移动,不需要任何连续的位置计算
您可以通过查看C#Corner网站上的页面了解更多信息。您可以将标签的
画布。左
和画布。顶部
与椭圆绑定,使其随形状移动
给椭圆赋予x:Name
,并使用标签中的ElementName进行绑定
<Ellipse x:Name="ellipse" Fill="#FFF3A7A7" Height="113" Canvas.Left="120"
Stroke="Black" Canvas.Top="173" Width="125"/>
<Label Content="Label" Height="39"
Canvas.Left="{Binding (Canvas.Left),ElementName=ellipse}"
Canvas.Top="286"
Width="125"/>
Canvas.Top
将与ellipse不同。所以,你可以做的是使用转换器,在那里你将通过椭圆的Canvas.Top
,并添加一些偏移量,然后用标签的Canvas.Top
绑定,就像我们对Canvas.Left
所做的那样。你能发布XAML代码吗?@RohitVats我不确定它为什么有用,但是这里是:
请检查答案。是的,这可能是一种方式,但是鼠标向下
事件将引用整个用户控件
,从而在Containeint用户控件
内的任意位置单击鼠标移动形状+标签,这是我试图避免的。忽略我的最后一条评论,您可以在形状中处理指针,并从此处修改整个用户控件的位置,因此这确实是一种方法