(主要な質問の更新)
目標:セル(または行)の範囲を選択する機能。1つのセルを更新し、その更新を該当するすべてのセル(同じ列のセルなど)にカスケードします
また、Enterを使用して、選択した範囲を失うことなくコミットして次のセルに移動するというExcelの動作が必要です。
Wpf Datagridコントロールを使用してこれを実行しようとしましたが、結果はクラッジになります。
- データグリッドは、Ctrl/Shiftを使用した複数選択をサポートしています。
- ただし、編集モードに入ると(SelectionModeとUnitに関係なく)、他のすべての行の選択が解除され、編集中の行が唯一の選択として残ります。これを回避するには、Mouse-Previewイベントにフックし、複数選択がある場合はそれをキャッシュします。行ViewModelsにIsSelectedプロパティを追加し、それらを使用して選択した行を自由に変更しました。
- 編集は、ユーザーがタブアウトした後にのみコミットされます。UpdateSourceTriggerをPropertyChangedに設定してバインディングを使用しました。RowViewModelsからPropertyChangeNotificationsをリッスンしたContainerVmを使用して、キャッシュされた複数選択に現在の編集を適用しました。
- DataGridイベントは役に立ちませんでした-BeginningEditが呼び出されるまでに、選択はDataGridCellのMouseDownハンドラーによってすでに変更されていました。
したがって、グリッドイベントとスタイリングは役に立ちませんでした。ViewModelアプローチもありません。試してみるもう1つのオプションは、DataGridCellの派生を記述し、それを何らかの方法でプラグインすることです。
アイデア?