Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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中获取控件的XY坐标?_Wpf_Mvvm_Controls_Coordinates - Fatal编程技术网

如何在WPF中获取控件的XY坐标?

如何在WPF中获取控件的XY坐标?,wpf,mvvm,controls,coordinates,Wpf,Mvvm,Controls,Coordinates,这个代码块非常有用,但是,我使用MVVM,所以代码块对我来说没用 我想在不使用rootVisual的情况下得到X&Y 谢谢并致以最良好的问候。我不确定我是否正确理解你的问题。您根本不想使用rootVisual,还是只想通过myVisual间接访问 大概是这样的: Point relativePoint = myVisual.TransformToAncestor(rootVisual) .Transform(new Point(0, 0

这个代码块非常有用,但是,我使用MVVM,所以代码块对我来说没用

我想在不使用rootVisual的情况下得到X&Y


谢谢并致以最良好的问候。

我不确定我是否正确理解你的问题。您根本不想使用rootVisual,还是只想通过myVisual间接访问

大概是这样的:

Point relativePoint = myVisual.TransformToAncestor(rootVisual)
                              .Transform(new Point(0, 0));

Window.Left为您提供x坐标,Window.Top为您提供Y坐标

如果使用MVVM,您的ViewModel不应该关心视图,那么为什么要这样做?我想通过ViewModel在两个控件之间画一条线。这不是ViewModel的工作,您应该在视图中这样做。ViewModel应该只触发此操作(例如使用事件或messenger/mediator),而不是实际执行它。视图可以订阅代码隐藏中的事件以实际划定界限。
var parent = VisualTreeHelper.GetParent(myVisual) as UIElement;
     Point relativePoint = myVisual.TransformToAncestor(parent)
                          .Transform(new Point(0, 0));