试图在页面呈现后执行某些内容,而不仅仅是加载到wpf中
本文关键字:不仅仅是 加载 wpf 执行 | 更新日期: 2023-09-27 18:20:57
我正在尝试获取wpf页面(而不是窗口)上UI元素的x,y位置。为了确保页面的呈现完成,我将撤销PointToScreen放在Loaded侦听器中。然而,我得到了这个运行时异常:
此Visual未连接到PresentationSource。
void Page_Loaded(object sender, RoutedEventArgs e)
{
.....
Point position = button1.PointToScreen(new Point(0d, 0d));
}
请告诉我该怎么办?或者,您可以提供一个如何运行调度器的例子吗?
没有内置或官方的方法可以做到这一点。但是,您可以使用Dispatcher类作为变通方法:
private void OnWindowLoaded(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke(new Action(() => YOUR_THING_HERE), DispatcherPriority.ContextIdle, null);
}
调度器将在几乎所有其他操作完成时运行(包括渲染)
我自己也遇到过类似的问题,所以这个答案是基于这篇为我解决问题的博客文章
编辑:我实际上错了
有一个ContentRendered事件可用于此目的。