我正在尝试在主窗口中找到用户控件的相对坐标.我尝试使用"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)