2

MVVMを使用せず、コードビハインド(SelectionChanged EventHandler関数内)でデータグリッドの選択された行の前景を変更したいのですが、確実な方法が見つかりません。

私の行は黒、青、赤にすることができますが、条件に基づいて優先度の高い色を表示します。現在の行を選択した後、優先リストから黒色を削除する必要があります。

私はいくつかのクラスを持っています:

public class TempClass{ public string cell1 { get; set; }; public string cell2 { get; set; };}

TempClass[] collection; 

私のデータグリッドにバインドされています:

datagrid.ItemsSource = collection;

何か案が?

4

1 に答える 1

2
var rowStyle = new Style {TargetType = typeof (DataGridRow)};
rowStyle.Setters.Add(new Setter(ForegroundProperty, Brushes.Green));
var rowTrigger = new Trigger {Property = DataGridRow.IsSelectedProperty, Value = true};
rowTrigger.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));
rowTrigger.Setters.Add(new Setter(BackgroundProperty, Brushes.Orange));
rowStyle.Triggers.Add(rowTrigger);

var cellStyle = new Style {TargetType = typeof (DataGridCell)};
var cellTrigger = new Trigger {Property = DataGridCell.IsSelectedProperty, Value = true};
cellTrigger.Setters.Add(new Setter(ForegroundProperty, Brushes.Red));
cellTrigger.Setters.Add(new Setter(BackgroundProperty, Brushes.Orange));
cellStyle.Triggers.Add(cellTrigger);

datagrid.RowStyle = rowStyle;
datagrid.CellStyle = cellStyle;
于 2012-07-06T18:51:10.630 に答える