ビジー状態を表すインジケータを表示するためのコントロールです。
ページ内リンク
基本的な使い方
BusyIndicator コントロールは、UI が処理中であることを示すためのインジケータを表示するためのコントロールです。
バックグラウンドで処理をおこないながら UI を更新するため、主に非同期処理をおこなっている場合に使用します。
ここでは async/await による簡単な非同期処理を使用します。
まず、重たい処理を表現するために、次のような SampleModel クラスを定義します。
本当におこないたい処理は DoHeavyWorkCore() メソッドですが、これを実行するタスクを返すメソッドが DoHeavyWorkAsync() メソッドです。
そして、DoHeavyWorkAsync() メソッドのほうを公開することで、外側からは同じタスクで重たい処理をさせないようにしています。
次に BusyIndicator コントロールを使った簡単なサンプルコードを示します。
Button コントロールと TextBlock コントロールを縦に並べた StackPanel コントロールの上に被さるように BusyIndicator コントロールを配置しています。
BusyIndicator コントロールは、IsBusy プロパティが true にならない限り表示されないため、普段は StackPanel コントロールの内容のみが表示される形となります。
なお、BusyIndicator には Message プロパティがあります。
下記のサンプルコードでは TextBlock コントロールを別に用意していますが、
BusyIndicator コントロールのインジケータ下部にメッセージを表示させることもできます。
こちらの場合、メッセージ表示用に UI のスペースを確保する必要がなくなります。
上記の MainView と SampleModel をつなぐための MainViewModel クラスのコードを次に示します。
MainView のボタンを押すと重たい処理が開始されるようにするため、ButtonCommand プロパティから非同期処理が開始されるようにしています。
非同期処理をおこなうには、処理をおこなうタスクの前に await 演算子を置きます。
また、await 演算子を使用することを許可するために、そのメソッドの修飾子に async を追加します。
上記のサンプルコードの実装結果は下図のようになります。