ヘッダーがクリックされた列のすべてのセルを選択する必要があります。
私は次の投稿からこれを取りました:
特定の列がクリックされたときに、尊重されているすべてのセルを選択したくありません。
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));
}