1

ヘッダーがクリックされた列のすべてのセルを選択する必要があります。

私は次の投稿からこれを取りました:

列内のすべてのセルを選択する

特定の列がクリックされたときに、尊重されているすべてのセルを選択したくありません。

cs:

    private void OnColumnsClicked(object sender, RoutedEventArgs e)
    {  
        var columnHeader = (DataGridColumnHeader)e.OriginalSource;           
        this.AssociatedObject.SelectedCells.Clear();

        for (int i = 0; i < this.AssociatedObject.Items.Count; i++)
        {
            var cellInfo = new DataGridCellInfo(this.AssociatedObject.Items[i], columnHeader.Column);
            this.AssociatedObject.SelectedCells.Add(cellInfo); // Here is where the Exception is thrown when adding to the SelectedCells collection .
        }                        
    }

問題は、2 番目のセルを SelectedCells に追加した後、次の例外が発生することです。

 The collection already contains the item.

重要 :

cellInfoを作成するとき、Item プロパティと Column プロパティの値があります (添付の画像を参照)。

ここに画像の説明を入力

is を SelectedCells に追加した後、SelectedCells[0]を参照してください。

ここに画像の説明を入力

SelectedCells に追加した後に Cell がゼロになる理由はありますか?

DataGridCellInfo (構造体) の等価性チェック (リフレクターから):

internal bool EqualsImpl(DataGridCellInfo cell)
{
     return (((cell._column == this._column) && (cell.Owner == this.Owner)) && (cell._info == this._info));
}
4

0 に答える 0