Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WPF中使组件相互对齐_Wpf_Vb.net_Xaml - Fatal编程技术网

在WPF中使组件相互对齐

在WPF中使组件相互对齐,wpf,vb.net,xaml,Wpf,Vb.net,Xaml,WPF应用程序由任意大小的统一网格组成。网格中的每个单元格都包含一个画布。每个画布都是拖放操作的目标 当我拖动另一个画布并将其放到网格内的画布上时,我希望拖动的画布(源)的左上角与目标画布对齐,基本上将源放在目标的顶部。我正在寻找的行为是一种快速网格效应 当前,当我使用element.GetValue(Canvas.LeftProperty)时,结果是NaN。问题是确定网格内画布的角点位置,但相对于整个窗口。我更喜欢使用网格,因为它会随着窗口的调整而自动调整大小 即使网格大小发生变化,是否有可能

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

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

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


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

通过指定画布的顶部和左侧属性,将每个画布绘制到另一个画布上,解决了此问题,我不得不刮网格。我通过使用指定了每个画布的位置

Canvas.SetLeft(Me, position.X)
Canvas.SetTop(Me, position.Y) 
其中
Me
是画布的一个实例


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

尝试点p=yourCanvas.TranslatePoint(新点(0,0),Window.GetWindow(yourCanvas))您应该能够通过获取相对位置。