質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

9976閲覧

[WPF]プログレスバーの背景色と進捗色を単色・グラデーション無しで表示したい。

Shiokawa

総合スコア10

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2016/09/07 14:47

編集2016/09/08 23:01

###前提・実現したいこと
OS:Windows7(開発環境)。Windows2000のPCに搭載します。
[WPF]プログレスバーの背景色と進捗色を単色・グラデーション無しで表示したい。
動的に複数グリット行列に表示するため、XMLコードでなくc#コードのみでコーディングしたい。

###発生している問題・エラーメッセージ
c#コードでBackgroundとForegrooundで単色を指定しても
デフォルトのグラデーションでアニメーション的に表示されてしまう。

###該当のソースコード
ProgressBar progbar = new ProgressBar();
progbar.IsIndeterminate = false;
progbar.Orientation = Orientation.Horizontal;
progbar.Width = 150; progbar.Height = 15;
progbar.Background = Brushes.Gray;
progbar.Foreground = Brushes.Red;
Binding b = new Binding();
b.Source = this;
b.Path = new PropertyPath("MyInt");
progbar.SetBinding(ProgressBar.ValueProperty, b);

###補足情報(言語/FW/ツール等のバージョンなど)
”[WPF]プログレスバーの色を変更する”でググルとXMLコードでは解決方法がありました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2016/09/08 01:19

デフォルトはOSのテーマに依存しそうな気がします。Windowsのバージョンを補足してください。
Shiokawa

2016/09/08 23:03

承知しました。 XMLコードでは解決方法が見つかりました。
guest

回答1

0

ベストアンサー

試してないのであれですけど、
http://dev.eyewhale.com/archives/648
こちらがXAML側でプログレスバーのテンプレートを入れ替えてBackground、Foreground、BorderBrush の色で描画するようにしてあるようです
グリッド内だけで適用したいのであればグリッドのリソースに突っ込んでやればいいかなぁという気がします

http://garicchi.hatenablog.jp/entry/2013/03/24/100317
ちなみにこっちのページを見ると、
"ProgressBarIndeterminateForegroundThemeBrush"というリソースを参照して描画してあるようなので、リソースの変更だと他のプログレスバーすべてに影響があると思いますので、先に挙げたサイトのやり方で既定のコントロールテンプレートを差し替える必要があるものと思われます

投稿2016/09/09 09:49

len_souko

総合スコア1348

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shiokawa

2016/09/09 14:37

今回の開発は、グリットの列数、行数とも表示作成時に決定するのでXAMLが使えません。 c#コードのみでテンプレートを入れ替えるコーディングの例がありましたら教えてもわえないでしょうか。
len_souko

2016/09/10 05:30

コード部分でそれぞれのBackground、Foreground、Borderに値を設定するなりバインドするなりすればできませんか? それともXAML側を変更すること自体が不可能なのでしょうか?
len_souko

2016/09/10 05:39

Grid?DataGrid?どっちですか?
len_souko

2016/09/10 06:02

試してみました Gridの場合はGrid.Resourcesにして既定の配色のプログレスバーを使用しないものとして使う場合は「x:Key」は指定なしでおkです DataGridの場合はDataGrid.Resourcesに同様に指定 以上がXAMLの下準備 あとはC#で質問の該当のソースコード通りに書いてしまえばリソースで指定してあるグリッドの子コントロールにセットすると既定の配色からリソースに定義してある配色へ変更されるのでBackground、Foreground、Borderの設定で思った通りに反映されます ただ、これもXAMLの修正が入るためNGというのであれば、 http://qiita.com/k_kikuchi_/items/21d986b592ec4d1470b9 この辺りを参考にして、 http://dev.eyewhale.com/archives/648 こちらで書かれているリソースで指定してあるStyleをコードビハインドで書くしかないかと思います すべてのプログレスバーで同じように設定したい場合なら、Windows.Resourcesに設定するのもアリです
len_souko

2016/09/10 06:13

https://social.msdn.microsoft.com/Forums/ja-JP/08759383-00cc-4891-bf05-7755ad9e01dc/windowresourcesc?forum=wpfja Windows.Resourcesなどへの追加はこちらが参考になるかと思いますが、どうしてもXAMLの編集をしてはいけない場合(デザイナーさんが別会社で編集すると問題が起きた時にどちらが責任を負うのかが変わってくる等)以外はデザインに関する部分は可能な限りXAMLで、個別の変更点はバインドで対応というのが望ましいかと思います
Shiokawa

2016/09/11 01:34

Gridです。 コード部分でそれぞれのBackground、Foreground、Borderに値を設定できます。 Windows.Resourcesに追加する方法でコーディングしてみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問