4

wpf アプリケーションに 3 つのストーリーボードがあります。

開始は単一のアニメーション 進行は繰り​​返しのアニメーション 終了も単一のアニメーション

同じ画像をアニメーション化するすべてのストーリーボード。「進行」ストーリーボードが繰り返され (別のスレッドでクエリが実行されている間)、「開始」ストーリーボードがその前にあり、「終了」アニメーションがそれに続きます。これは単純な問題だと思いました。アプリケーションの起動時に「開始」アニメーションを開始し、次に oncompleted イベント ハンドラーで進行アニメーションを開始するなどです。

しかし、うまくいきません: 進行状況のアニメーションが開始されますが、正しく表示されません (奇妙な点滅)。

これを分析するために「button1」を作成しましたが、ボタンのonclickイベントハンドラーで同じメソッドが機能することに気付きました(ストーリーボードの開始が終了した後、それを押すと、進行状況のストーリーボードが開始され、完全に表示されました)。(開始アニメーションの FillBehavior は "Stop" です。この設定がないとボタンは機能しませんが、イベント ハンドラは設定後も間違ったままです)

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        begin = (Storyboard)FindResource("startanimation");
        progress = (Storyboard)FindResource("progressanimation");
        end = (Storyboard)FindResource("stopanimation");
        begin.Completed += new EventHandler(begin_Completed);
        begin.Begin();
    }


    void begin_Completed(object sender, EventArgs e)
    {
        progress.Begin();       //not works
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {            
        progress.Begin();       //works
    }

何か案が?

4

2 に答える 2

0

これを試して:

void begin_Completed(object sender, EventArgs e)      
{          
     this.Dispatcher.Invoke(
                            System.Windows.Threading.DispatcherPriority.Normal,
                            new Action(
                            delegate()
                            {
                                progress.Begin();
                            }
                        ));
} 
于 2012-07-06T11:49:05.513 に答える
0

最終的には、セカンダリ タイマーを作成し、tick イベントで進行アニメーションを開始する必要があります。非常に見苦しいですが、機能します。

他のヒントは引き続き歓迎します。

于 2012-07-08T18:05:44.003 に答える