我试图在主窗口中找到用户控件的相对坐标。我尝试使用“Control.PointToScreen()”方法但没有成功。每次我这样做时,我都会得到一个异常:
System.InvalidOperationException:此视觉对象未连接到 PresentationSource
我认为这与我在视觉效果正确呈现之前调用 pointToScreen 有关,因为我已经在我的 Mains Constructor 中调用该方法。
无论如何,我想听听你们中是否有人有提示/解决方案/想法我可以如何解决这个问题。
只是为了弄清楚我要做什么,我的控件包含一个照片控件,我需要它在我的主控件内的确切位置,因为我想使用这些坐标在上面创建控件的副本它
使用 PointToScreen 进行试验。
最佳答案
在您的代码中注册 UserControl 的 Loaded 事件。 这应该可以修复当您尝试获取位置时视觉效果尚未呈现的错误。
YourControl.Loaded += ControlLoaded;
public void ControlLoaded(object sender, EventArgs e){
Console.WriteLine(YourControl.PointToScreen(new Point(0,0));
}
编辑
既然你想要你的控件相对于你的窗口的位置,最好试试那个。
YourControl.TransformToAncestor(YourWindow).Transform(new Point(0,0))
关于c# - 使用 PointToScreen 在 wpf 中查找控件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24802945/