首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >等待动画,渲染完成- XAML和C#

等待动画,渲染完成- XAML和C#
EN

Stack Overflow用户
提问于 2010-06-07 22:31:40
回答 2查看 5.4K关注 0票数 6

我遇到了这样一种情况:我正在对XAML应用程序的一部分进行动画处理,并且需要等待动画和渲染完成,然后才能继续编写代码。到目前为止,我的函数的末尾看起来像这样:

代码语言:javascript
运行
复制
    ProcExpandCollapse.Begin();
    while (ProcExpandCollapse.GetCurrentState() != ClockState.Stopped) { }
}

从理论上讲,它会一直等到动画结束。但它不会等到渲染完成-绘制应用程序的线程可能仍然没有重新绘制动画。

动画正在扩展一个UIElement,然后我的代码的下一部分使用它的渲染大小来做一些事情。我的问题是,如何等到UI元素被重新渲染后再继续?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-08 06:11:30

我终于找到了答案(尽管我必须为咨询服务付费)!本质上,我最终所做的是将使用渲染控件的代码以非常低的优先级放在控件调度器的队列上,以便它在处理该任务之前自然地渲染。例如:

代码语言:javascript
运行
复制
mycontrol.Dispatcher.BeginInvoke((Action)delegate{textbox1.Text = "Grazie";});
mycontrol.Dispatcher.Invoke((Action)delegate{GetScreenshot();}, DispatcherPriority.Background);

然后,代码将在调用并完成GetScreenshot之后继续,这将是在渲染完成之后(因为渲染比后台具有更高的优先级)。

票数 8
EN

Stack Overflow用户

发布于 2010-06-07 22:36:40

Storyboard对象有一个您可以订阅的“Completed”事件。它将在动画完成时被调用。这就是你要找的?

基本上,我认为你想要"ProcExpandCollapse.Completed +=“(然后点击tab查看时间,VS将为你生成一个片段)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2990373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档