使用PointToScreen在wpf中查找控件的位置

Max*_*zur 3 c# wpf point

我正在尝试在主窗口中找到用户控件的相对坐标.我尝试使用"Control.PointToScreen()"方法,但没有运气.每次我这样做,我得到一个例外,说:

System.InvalidOperationException:此Visual未连接到PresentationSource

我认为这与我在视觉效果正确渲染之前调用pointToScreen有关,因为我已经在我的Mains Constructor中调用了该方法.

无论如何,我想听听你是否有人提示/解决方案/想法如何解决这个问题.

只是为了清楚我正在尝试做什么,我的控件包含一个photocontrol我需要在我的maincontrol里面的确切位置,因为我想使用这些坐标在它上面创建一个控件的副本

尝试使用PointToScreen.

seb*_*aub 10

在您的代码注册中,用于UserControl的Loaded事件.这应该可以解决当您尝试获取位置时尚未呈现视觉效果的错误.

YourControl.Loaded += ControlLoaded;

public void ControlLoaded(object sender, EventArgs e){
    Console.WriteLine(YourControl.PointToScreen(new Point(0,0));
}
Run Code Online (Sandbox Code Playgroud)

编辑

由于您希望控件的位置相对于窗口,因此最好尝试一下.

YourControl.TransformToAncestor(YourWindow).Transform(new Point(0,0))
Run Code Online (Sandbox Code Playgroud)