2017-04-26 6 views
0

具体的には、私は、アプリケーションの操作履歴を表示する方法としてDataGridを使用しています。問題は、ユーザーの目にとって、列を認識するのが難しいことです。だから私は、色をルーピングすることで列を一つ一つ色づけることにしました。私は非常によくWPFマークアップを知らない、私は以下のC#の関数で列を定義し、適用されるようにまず、白、青二、白の三と...列が定義されて追加されたときにwpfデータグリッドの列の色を付けるにはどうすればいいですか?

:これはC1で

private void generate_columns() 
    { 
     DataGridTextColumn c1 = new DataGridTextColumn(); 
     c1.Header = "Shot number"; 
     c1.Binding = new Binding("shotNum"); 
     c1.Width = 80; 
     dataGrid.Columns.Add(c1); 
     DataGridTextColumn c2 = new DataGridTextColumn(); 
     c2.Header = "Shooter name"; 
     c2.Width = 160; 
     c2.Binding = new Binding("shooter"); 
     dataGrid.Columns.Add(c2); 
     DataGridTextColumn c3 = new DataGridTextColumn(); 
     c3.Header = "shot 1"; 
     c3.Width = 120; 
     c3.Binding = new Binding("shoot1"); 
     dataGrid.Columns.Add(c3); 
     DataGridTextColumn c4 = new DataGridTextColumn(); 
     c4.Header = "shot 2"; 
     c4.Width = 120; 
     c4.Binding = new Binding("shoot2"); 
     dataGrid.Columns.Add(c4); 
     DataGridTextColumn c5 = new DataGridTextColumn(); 
     c5.Header = "shot 3"; 
     c5.Width = 120; 
     c5.Binding = new Binding("shoot3"); 
     dataGrid.Columns.Add(c5); 
     DataGridTextColumn c6 = new DataGridTextColumn(); 
     c6.Header = "Addition"; 
     c6.Width = 180; 
     c6.Binding = new Binding("addition"); 
     dataGrid.Columns.Add(c6); 
     DataGridTextColumn c7 = new DataGridTextColumn(); 
     c7.Header = "Player1 score"; 
     c7.Width = 160; 
     c7.Binding = new Binding("scoreh"); 
     dataGrid.Columns.Add(c7); 
     DataGridTextColumn c8 = new DataGridTextColumn(); 
     c8.Header = "Player2 score"; 
     c8.Width = 160; 
     c8.Binding = new Binding("scoreo"); 
     dataGrid.Columns.Add(c8); 
    } 

、 c2、...、c8はTextColumnsであり、dataGridはDataGridの名前です。 また、generate_columns()関数はウィンドウの起動時に呼び出されます。

私の質問は私がそうすることができれば、私は上記のコードにして色をコントロールして言及したように変更することができますか?

ヘルプやアイデアの任意のビットは、非常に

+1

XAMLでそのまま実行します。マークアップを学ぶ。 –

+0

XAMLプロパティはC#プロパティとまったく同じですが、それを書き込む方法が異なります。たとえば、最初の列のXAMLバージョンは、 ''になります。あなたは何を使用する必要がある参照してください? – Rachel

答えて

0

を考えているあなたは本当にC#でそれをしたい場合は、使用して、列のセルの色を設定することができます。

c1.CellStyle = new Style(typeof(DataGridCell)); 
c1.CellStyle.Setters.Add(new Setter(BackgroundProperty, new SolidColorBrush(Colors.LightBlue))); 

だから、あなたがしたい場合は色交互に、迅速な方法は次のようになります

for (int i = 0; i < dataGrid.Columns.Count; i++) 
{ 
    var desiredColor = new SolidColorBrush(i % 2 == 0 ? Colors.White : Colors.LightBlue); 

    dataGrid.Columns[i].CellStyle = new Style(typeof(DataGridCell)); 
    dataGrid.Columns[i].CellStyle.Setters.Add(new Setter(BackgroundProperty, desiredColor)); 
} 

i % 2 == 0 ?は偶数と奇数の色を交互に使用される

+0

あまりにも多くの男性ありがとう –

+0

あなたはどちらかの行について同じことを説明できますか? –

関連する問題