2011-09-11 10 views
0

私はビューに2つのボタンを持っています.1つはサウンドを録音するためのボタン、もう1つは録音が終了したときに録音を再生するボタンです。録音が完了したら、recording_doneのVMプロパティを1に設定します。これはCanPlay()で使用され、再生ボタンが有効になります。これまではすべてうまく動作します。DispatcherTimerはUIの更新をブロックしますか?

2秒後に自動的に録画を停止するタイマーを追加しました。いくつかの試行錯誤の末、私はDispatcherTimerで解決しました。私の問題は、UI(再生ボタン)は、WPFウィンドウをクリックするまで(ウィンドウのどこかどこでも)有効になります。明らかに、デバッグmsgはrecording_doneが1に設定されていると言います。ウィンドウをクリックするまでは、UIアップデートを起動するはずですが、起動しません。

私は両方の方法を試しました。1.録画ボタンがViewModelのコマンドにバインドされました。そこで、タイマーを開始してタイマーを停止します。 2.記録ボタンハンドラとタイマーコードをビューのコードの中に入れます。同様の問題。

提案がありますか?これはスレッド/ UI更新の問題ですか?ありがとう。

答えて

0

あなたの再生ボタンがコマンドにバインドされ、コマンドのCanExecute()recording_doneプロパティまたはフィールドに間接的に結合されている場合は、それがICommandCanExecuteChangedイベントまで更新しませんが発生、またはWPFをすることを決めたまでされますコマンドを再クエリします。私はこれが問題だと思っています。ICommandCanExecuteChangedにする必要があります。

+0

タイマーイベントハンドラにRaiseCanExecuteChanged()を追加しました。そして、はい、それは動作します!ありがとう! –

関連する問題