読者です 読者をやめる 読者になる 読者になる

がりらぼ

WindowsRuntimeの応援ブログ

簡単にProgressRingを表示させることができるクラス、AttachedProgressを作りました

C# WindowsRuntime

awaitで非同期処理をしている最中、ProgressRingを回すアプリはよくあると思います。
しかし、ProgressRingコントロールをいちいちXAMLで設置して管理するのはUI的にも崩れやすく、非表示にしたりするのがだるくて、結局つけないとかいう例がよくあります。(私

そこで、わりと簡単にProgressリングを作るクラスをGitHubで公開しました。
garicchi/AtthachedProgress · GitHub

使い方はこんな感じ

//第一引数はRingを置きたいパネル(GridやStackPanelなど)
//第二、第三でサイズ
var progress = new AttachedProgress(this.gridRoot,100,100);

//開始
progress.Active();

//終了
progress.InActive();

割と簡単に表示できました。
f:id:garicchi:20140131130358p:plain

色を変えたい場合はProgressBrushプロパティをいじってください

progress.ProgressBrush = new SolidColorBrush(Colors.Pink);

内部的にはPopUpとProgressRingで構成されていて、プロパティとしてあるので詳しくいじりたい人はその2つを

例えばGridの2行目におきたい場合

Grid.SetRow(progress.Popup,1);

結論

ProgressRingコントロールとめんどくささはそんなに変わらなかった
IsActiveをしたときにPopupが閉じるようになっているのでXAMLで直接ProgressRingを置くよりは非表示化が楽になったかなと