データグリッドの各行をループし、列の値を取り出し、この値をメソッドに渡し、メソッドの結果に基づいてその行をスタイルしようとしています。
データグリッドの行をループするだけではできないことがわかった後、それがどのように可能であったかを詳述したこの投稿を見つけました。
datarowview オブジェクトを操作するように少し変更しました。
私が今抱えている問題は、
var dgRow = grid.ItemContainerGenerator.ContainerFromItem(r) as DataGridRow;
は常に null を返します。
私の場合になぜこれが起こっているのか、そして彼らがそれを行うより簡単な方法を見ることができるかどうかについて、誰かがアドバイスできますか.
さらに情報が必要な場合はお知らせください。
私のコードは次のとおりです。
private void colorArchived( DataGrid grid , GX3MaterialSelectionData data)
{
var row = GetDataGridRows(grid);
foreach (DataRowView r in row)
{
var dgRow = grid.ItemContainerGenerator.ContainerFromItem(r) as DataGridRow;
int val = int.Parse(r.Row[0].ToString());
if ( data.IsArchived(val) )
{
// style will be defined in xaml
dgRow.Style = mystyle;
}
}
}
public IEnumerable<DataRowView> GetDataGridRows(DataGrid grid)
{
var itemsSource = grid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
{
var row = item;
if (null != row) yield return (DataRowView)row;
}
}