在加载之后和显示用户控件之前是否有任何事件?

Spo*_*ade 5 wpf user-controls onload

我正在我们的应用程序中的特定网格中加载用户控件,并且我正在向控件的Loaded事件处理程序中的加载用户控件添加动画.

一些用户控件是轻量级的,其中一些在加载之前需要大量计算.问题是,当我向重度用户控件添加1秒动画时,然后显示控件,以便永远不会看到动画!

是否有任何其他事件我可以将我的动画添加到用户控件中,以便使用相同的动画显示重的和轻的动画?

在显示控件之前我需要一个事件.OnLoaded不幸的是,对我来说似乎不是正确的地方.

Spo*_*ade 5

答案是给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)