0

我正在使用 DataGrids 开发一个 WPF 项目,我试图让用户能够选择他想要的任意数量的行或只选择一个单元格,即禁用选择单元格范围。但我无法做到这一点。

这可能吗?

我尝试了以下代码:

public MyDataGrid : DataGrid
{
    public ExtendedDataGrid()
    {
        SelectionMode = DataGridSelectionMode.Extended;
        SelectionUnit = DataGridSelectionUnit.CellOrRowHeader;
        this.SelectedCellsChanged += new SelectedCellsChangedEventHandler(MyDataGrid_SelectedCellsChanged);
    }

    void MyDataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
    {
        if (this.SelectedCells.Count > 1)
        {                
            DataGridCellInfo currentCell = this.CurrentCell;
            this.SelectedCells.Clear();
            this.CurrentCell = currentCell;
        }
    }

但是这段代码不允许我选择一整行。

那么,有没有办法根据需要选择尽可能多的行但阻止用户选择单元格范围?

提前致谢。

4

1 回答 1

1

我想我已经解决了我的问题:

private void MyDataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
    {
        int columnsCount = this.Columns.Count;
        int selectedCells = SelectedCells.Count;
        int selectedItems = SelectedItems.Count;

        if (selectedCells > 1)
        {
            if (selectedItems == 0 || selectedCells % selectedItems != 0)
            {
                DataGridCellInfo cellInfo = SelectedCells[0];
                SelectedCells.Clear();
                SelectedCells.Add(cellInfo);
                CurrentCell = SelectedCells[0];
            }
        }
    }

我知道这不是一个优雅的解决方案,但到目前为止,它可以按预期工作,如果其他人有更好的解决方案,我将不胜感激

于 2012-07-23T23:56:09.113 回答