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 に答える