Выделение ячеек в WPF DataGrid
Я использую приведенный ниже метод для выделения ячеек из моего кода для моей таблицы данных. Но проблема в том, что когда я прокручиваю вне поля зрения, выделенные ячейки теряются и прыгают вокруг. У меня есть набор строк и столбцов виртуализации в false. пожалуйста помочь.
public void ColourCell(int row, int column, Color color, bool HighlightFlag = true) { DataGridRow rowContainer = GetRow(row); if (rowContainer != null) { DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer); // try to get the cell but it may possibly be virtualized but enable virtualizion is off DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); // now try to bring into view and retreive the cell if (cell != null) { if (HighlightFlag == false) cell.Background = new SolidColorBrush(Colors.MediumPurple); else { cell.Background = new SolidColorBrush(color); } } } }
public DataGridRow GetRow(int index) { DataGridRow row = (DataGridRow)DataGridControl.ItemContainerGenerator.ContainerFromIndex(index); if (row == null) { row = (DataGridRow)DataGridControl.ItemContainerGenerator.ContainerFromIndex(index); } return row; }
static T GetVisualChild<T>(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild<T>(v); } if (child != null) { break; } } return child; }