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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WPF

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

Q&A

1回答

879閲覧

WPF MySQL : DataGridのセルの背景を赤くしたい

ryota1017stars

総合スコア21

C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WPF

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

0グッド

0クリップ

投稿2020/04/23 13:20

ySQLから取得したデータで、valueが13以上のセルの背景を赤にしたいのですが、どうすればよいかわかりません。解決方法を教えていただきたく、よろしくお願いいたします。

現状は以下のような実装をしております。

MySQL テーブル

MySQL

1mysql> select * from test_table; 2+------+-------+ 3| id | value | 4+------+-------+ 5| 1 | 2 | 6| 2 | 3 | 7| 3 | 4 | 8+------+-------+

Test.xaml.cs

c#

1InitializeComponent(); 2 3string sLogin = "server=localhost; database = database; userid=id; password=pass;"; 4MySqlConnection conn = new MySqlConnection(sLogin); 5 6conn.Open(); 7 8MySqlCommand cmd = new MySqlCommand("select * from test_table;", conn); 9MySqlDataReader rdr = cmd.ExecuteReader(); 10 11DataTable table = new DataTable(); 12table.Columns.Add("id"); 13table.Columns.Add("value"); 14 15while (rdr.Read()) 16{ 17 var row = table.NewRow(); 18 row[0] = rdr[0]; 19 row[1] = rdr[1]; 20 table.Rows.Add(row); 21} 22DataContext = table; 23conn.Close();

Test.xaml

xaml

1<Page …省略…> 2 <Grid> 3 <DataGrid ItemsSource="{Binding}" /> 4 </Grid> 5</Page>

現在表はこの画像のように表示されています。
イメージ説明

それをこの画像のように、valueが13以上のセルの背景を赤くしたいです。

イメージ説明

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

セルの背景色を変更したい、といった要望がある場合、DataGridの自動列生成機能は使えないので、`AutoGenerateColumns="False"`と指定します。
その上で、Binding対象に背景色の列を用意しておき、それにBindingします。
SQLは今回の問題には関係ないので、抜いてあります。

xaml

1<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Binding}"> 2 <DataGrid.Columns> 3 <DataGridTextColumn Binding="{Binding id, Mode=OneWay}" /> 4 <DataGridTemplateColumn> 5 <DataGridTemplateColumn.CellTemplate> 6 <DataTemplate> 7 <TextBox Background="{Binding color}" Text="{Binding value, Mode=OneWay}" /> 8 </DataTemplate> 9 </DataGridTemplateColumn.CellTemplate> 10 </DataGridTemplateColumn> 11 </DataGrid.Columns> 12 </DataGrid>

csharp

1private static DataTable CreateTable() 2{ 3 var table = new DataTable(); 4 table.Columns.Add("id"); 5 table.Columns.Add("value"); 6 table.Columns.Add("color"); 7 8 for (int i = 0; i < 3; i++) 9 { 10 var row = table.NewRow(); 11 row[0] = i; 12 int value = i * 10; 13 row[1] = value; 14 row[2] = value > 13 ? Colors.Red : Colors.Transparent; 15 16 table.Rows.Add(row); 17 } 18 return table; 19}

投稿2020/04/26 06:39

soi013

総合スコア149

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問