Spo*_*ade 5 wpf user-controls onload
我正在我们的应用程序中的特定网格中加载用户控件,并且我正在向控件的Loaded事件处理程序中的加载用户控件添加动画.
一些用户控件是轻量级的,其中一些在加载之前需要大量计算.问题是,当我向重度用户控件添加1秒动画时,然后显示控件,以便永远不会看到动画!
是否有任何其他事件我可以将我的动画添加到用户控件中,以便使用相同的动画显示重的和轻的动画?
在显示控件之前我需要一个事件.OnLoaded不幸的是,对我来说似乎不是正确的地方.
答案是给Storyboard.Begin一个较低的优先级.
我从这个答案中找到了它:https://stackoverflow.com/a/4708172/970420
所以我们有这个代码来开始动画:
void BeginStoryboardAction(Storyboard sb)
{
sb.Begin();
}
Run Code Online (Sandbox Code Playgroud)
我们应该这样称呼它:
Dispatcher.BeginInvoke(new Action<Storyboard>(BeginStoryboardAction), DispatcherPriority.ContextIdle, sb);
Run Code Online (Sandbox Code Playgroud)
sb是Storyboard的一个实例,里面有一些动画.
[编辑]:另一种较短的方式:
Dispatcher.BeginInvoke(new Action<Storyboard>(delegate (Storyboard stb){stb.Begin();}), DispatcherPriority.ContextIdle, sb);
Run Code Online (Sandbox Code Playgroud)