そのため、WPFアプリケーションとその中にデータグリッドがあり、編集できず、行全体の選択が有効になっています。データグリッドの行を使用して、一種のオン/オフの切り替え機能を作成しようとしています。ただし、単純な行選択に適したイベントが見つからないようです。がありSelectionChanged
ますが、すでに選択されているアイテムをもう一度クリックすると機能しません。単純なClick
もの(多くの種類)がありますが、それらはすべて、行が実際に選択される前に発生するため、クリックで選択されたアイテムを取得しようとすると、nullになります。2回クリックする必要がある他のイベント(私が忘れていた)がありますが、これは本当に私が望んでいることではありません。アイデアが足りなくなっています。何か良いイベントの組み合わせや、それらをオーバーライドする方法があるのでしょうか、それとも何かが足りないのでしょうか。
3 に答える
あなたが提供した情報を考慮すると、@ Yatrixのソリューションは完全に有効です!
しかし、それにあなたは答えました..
行が選択される前に発生するため、機能しません:/
次に、ここに欠けているものがあります。LeftMouseDown \ LeftMouseUp \ PreviewLeftMouseDown \ Upイベントが選択イベントの前に発生した場合でも、行がすでに選択されているかどうかがわかります。そうすれば、彼らはそれを選択解除してから行うことができます
e.Handled=true
....マウスイベントの後に選択が呼び出されないようにするため、再選択は回避されます。
試して、私に知らせてください。
PreviewMouseDown
またはPreviewMouseLeftButtonDown
役立つかもしれません。私はまた、あなたに方向性を提供するかもしれないこのサイトでこれを見つけました:
SelectionMode = "Extended"の場合、クリック時にDataGridの選択を解除するにはどうすればよいですか?
行Selectedイベントにサインアップする場合は、DataGridの各行に対してサインアップする必要があります。DataGridでLoadingRowイベントにサインアップしてみてください。また、各行について、 Selectedイベントにサインアップしてください。