我试图在wpf页面(不是窗口)上获取UI元素的x,y位置。为了确保完成页面的呈现,我将PointToScreen的撤销放在Loaded监听器中。但是我得到了这个运行时异常:
此Visual未连接到PresentationSource。
void Page_Loaded(object sender, RoutedEventArgs e)
{
.....
Point position = button1.PointToScreen(new Point(0d, 0d));
}
请让我知道该怎么办?或者你能举例说明我如何运行调度程序吗?
答案 0 :(得分:0)
没有内置或官方的方法来做到这一点。但是,您可以使用Dispatcher类作为解决方法:
private void OnWindowLoaded(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke(new Action(() => YOUR_THING_HERE), DispatcherPriority.ContextIdle, null);
}
调度程序将在几乎所有其他操作完成后运行(包括渲染)
我自己也有类似的问题,所以这个答案是基于this博客文章为我解决的。
编辑:我其实错了
有一个ContentRendered事件可以达到此目的。