我遇到的情况是,我正在对 XAML 应用程序的一部分进行动画处理,并且我需要等待动画和渲染完成,然后才能继续编写代码。到目前为止,我的函数的尾部如下所示:
ProcExpandCollapse.Begin();
while (ProcExpandCollapse.GetCurrentState() != ClockState.Stopped) { }
}
理论上来说,会等到动画完成。但它不会等到渲染完成 - 绘制应用程序的线程可能仍然没有重新绘制动画。
动画正在扩展 UIElement,然后我的代码的下一部分使用它的渲染大小来执行一些操作。我的问题是,如何等到我的 UI 元素重新渲染后再继续?
我终于找到了答案(虽然我要付费咨询服务)!本质上,我最终所做的是以非常低的优先级将使用渲染控件的代码位放在控制调度程序的队列中,以便它在处理该任务之前自然渲染。例如:
mycontrol.Dispatcher.BeginInvoke((Action)delegate{textbox1.Text = "Grazie";});
mycontrol.Dispatcher.Invoke((Action)delegate{GetScreenshot();}, DispatcherPriority.Background);
代码将在调用 GetScreenshot 并完成后继续执行,这将在渲染完成后进行(因为渲染的优先级高于背景)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)