私はこの本当に小さな問題を抱えていますが、簡単には解決できません。現在、私のプログラムには「開始」と「キャンセル」の 2 つのボタンがあります。ユーザーがスタートをクリックすると、ボタンはすぐに移動する必要があります。
StartButton.IsEnabled = false;
CancelButton.IsEnabled = true;
ただし、UI は常に最後に更新されるため、これは BackgroundWorker (ボタンを押した後に実行されるすべてのコード) が終了した場合にのみ発生します。バックグラウンドワーカーの「ProgressChanged」または「Completed」イベントにこれらのコマンドを追加する方法はありません。これらのイベントは、完了するまでに最大 10 分かかる場合があります。
簡単な方法の 1 つは、これらのコマンドを「ProgressChanged」部分に追加し、最後に「Complete」で状態を再度変更することです。しかし、いくつかの「ProgressChanged」イベントの後ではなく、ボタンが常に実際の状態を表示する必要があるため、これを避けたいと思います。もちろん、ボタンの UI プロパティを使用しないなど、回避策は常にあります。
これに対する短い解決策はありますか?
Button.Property の変更を ClickEvent に追加しても機能しません。これがこの問題の主な問題です。BGW の「完了」部分を使用して、ボタンの背面を開始状態に合わせて簡単に変更できます。問題は、すべてのイベントと BGW の直前にそれらを設定することです。