1

経由で購読しました

_itemsGrid.SelectedCellsChanged += Handle_SelectedCellsChangedEvent;

WPF DataGrid SelectedCellsChanged イベントに、および経由でログを記録する場合

private void Handle_SelectedCellsChangedEvent (object sender, SelectedCellsChangedEventArgs args)
{
    Logger.DoLogging("args.AddedCells.Count={0}, args.RemovedCells.Count={1}.", args.AddedCells.Count, args.RemovedCells.Count);
    ...
}

1 つの行選択の変更に対して 2 つの呼び出しがある場合があります。

    1.AddedCells.Count = 4、RemovedCells.Count = 0
    2.AddedCells.Count = 0、RemovedCells.Count = 4

現在、この動作は不便または予期しないものになる可能性がありますが、それ自体は問題ありません。私の本当の問題は、特定の条件でデータ グリッドが削除されたセルの選択を解除するのを忘れていることです。これは、イベント ハンドラーが呼び出されて処理された後も、以前に選択されていたセルがまだ視覚的に選択されていることを意味します。

この忘れは、ユーザーに表示しているダイアログに関連していると思います。

データ グリッドがセルの選択を解除するのを「忘れる」のを見た人はいますか?

ありがとうフランク

4

1 に答える 1

3

このイベントは、セルが選択範囲に追加されたことを通知するアクション (つまり、 SelectedCells )をカプセル化するだけでなく、セルが選択範囲から削除されたことも通知します。これにより、両方またはいずれかの選択変更タイプに対してアクションを実行できます。

これは、 NotifyCollectionChangedEventArgsが 1 つの Action を持つという事実に対応していると思います。したがって、グリッドの SelectedCells コレクションの変更を表示するには、項目を追加および削除する必要があります。この追加と削除の通知は、イベントが 1 つの通知として表示することをサポートしていないため、個別の通知に分割されます。

于 2012-07-25T15:30:39.587 に答える