Próbuję przechodzić przez każdy wiersz w datagrid, wyciągnąć wartość kolumny, przekazać tę wartość do metody i styl tego wiersza na podstawie wyniku metody.Uzyskiwanie datagridrow z widoku danych WPF
Po stwierdzeniu, że nie mogę po prostu przechodzić przez wiersze datagridu znalazłem this po wyszczególnieniu jak to było możliwe.
Zmodyfikowałem nieznacznie, dzięki czemu pracuję z obiektami datarowview.
Problem mam teraz jest, że
var dgRow = grid.ItemContainerGenerator.ContainerFromItem(r) as DataGridRow;
zawsze zwraca wartość null.
Czy ktoś może doradzić, dlaczego tak się dzieje w moim przypadku i czy może zobaczyć łatwiejszy sposób.
Proszę dać mi znać, jeśli potrzebujesz więcej informacji.
Herezje mój kod:
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;
}
}