我遇到的情况是我正在对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之后继续进行,这将在渲染完成之后进行(因为渲染的优先级高于背景)。

关于c# - 等待动画,渲染完成-XAML和C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2990373/

10-12 12:45
查看更多