0

我想标记数据网格的某些单元格以更改标记单元格的颜色。我可以用他们的代码为单个单元格做到这一点:

    public static DataGridRow GetRow(this DataGrid dataGrid, int index)
    {
        DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);
        if (row == null)
        {
            dataGrid.UpdateLayout();
            dataGrid.ScrollIntoView(dataGrid.Items[index]);
            row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);
        }
        return row;
    }

    public static int GetRowIdx(this DataGrid dataGrid, DataGridCellInfo cellInfo)
    {
        // Use reflection to get DataGridCell.RowDataItem property value.
        DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(cellInfo.Item);
        if (row == null)
            throw new NullReferenceException("Fehler: Keine Index gefunden da DataGridRow null!");
        return row.GetIndex();
    }



   public static DataGridCell GetCurrentCell(this DataGrid dataGrid)
    {
        int row = GetRowIdx(dataGrid, dataGrid.CurrentCell);
        int column = dataGrid.CurrentColumn.DisplayIndex;

        return GetCell(dataGrid, row, column);
    }

呼唤:

    DataGridCell currentCell = DataGridExtension.GetCurrentCell(dataGrid1);
    currentCell.Background = Brushes.LightGray;

有人知道如何更改此代码,以便我可以标记例如 5 个单元格并更改它们的颜色?

4

1 回答 1

1

您可以创建 DataGridCell 的集合并将它们全部标记在另一个事件上,例如单击按钮:

List<DataGridCell> CellList = new List<DataGridCell>();

然后,每当您单击一个单元格时,都会将该事件添加到 CellList 中:

DataGridCell currentCell = DataGridExtension.GetCurrentCell(dataGrid1);
CellList.Add(currentCell);

然后,当您想将所有单元格更改为新颜色时,单击一个按钮并将其添加到事件处理程序中:

foreach (DataGridCell cell in CellList)
{
    cell.Background = Brushes.LightGray;
}
于 2013-08-22T11:24:56.197 回答