がりらぼ

WindowsRuntimeの応援ブログ

ProgressBarの色をC#コードから変更する

ProgressBarの色はForegraundプロパティを変更しても色が変わりません。

通常なら、Xamlのリソースを上書きするしかないです。

[xml]

<SolidColorBrush x:Key="ProgressBarForegroundThemeBrush" Color="#FF4617B4" />

[/xml]

こういうリソースをApp.xamlのResourceDictionaryタグの中に入れて、Colorの部分を変更すると手っ取り早いです。

 

変更すべきリソース

(淡色テーマ時)

[xml]

<!--背景-->

<SolidColorBrush x:Key="ProgressBarBackgroundThemeBrush" Color="#30000000" />

<!--ボーダー色-->

<SolidColorBrush x:Key="ProgressBarBorderThemeBrush" Color="Transparent" />

<!--進行状況確定時色(IsIndetrerminate=false)-->

<SolidColorBrush x:Key="ProgressBarForegroundThemeBrush" Color="#FF4617B4" />

<!--進行状況不確定時色(IsIndetrerminate=true)-->

<SolidColorBrush x:Key="ProgressBarIndeterminateForegroundThemeBrush" Color="#FF4617B4" />

[/xml]

しかし、XAML変更だけでなく状況によって色を変更したいとかだと、C#コードロジックから変更する必要があります。

ProgressBarはリソースの色を適用するので、リソースをコードから変更しましょう。

[csharp]

(Resources["ProgressBarIndeterminateForegroundThemeBrush"] as SolidColorBrush).Color = Colors.Black;

[/csharp]