所以我有一个WPF应用程序和一个数据网格,不可编辑,启用了完整的行选择,我正在尝试使用datagrid行进行一种切换开关功能。但是,我似乎无法为简单的行选择找到合适的事件。有SelectionChanged
,如果再次单击已选择的项目,则无效。有简单的Click
(很多类型),但所有这些都在实际选择行之前发生,所以如果我尝试在点击上获得所选项目,我将得到null。有一些其他事件(我忘了)需要点击两次,这不是我想要的。我的想法已经用完了,也许有一些很好的事件组合或某种方式来覆盖它们,或者我可能只是错过了一些东西?
答案 0 :(得分:2)
考虑到您提供的信息,@ Yatrix的解决方案完全有效!
但是你已经回复了..
在选择行之前发生,因此不起作用:/
然后你在这里缺少一些东西。即使LeftMouseDown \ LeftMouseUp \ PreviewLeftMouseDown \ Up事件发生在选择事件之前,他们也会知道该行是否已被选中。这样他们可以取消选择然后再做
e.Handled=true
....因此在鼠标事件之后永远不会调用选择,从而避免重新选择。
试着让我知道。
答案 1 :(得分:0)
PreviewMouseDown
或PreviewMouseLeftButtonDown
可能有所帮助。我也在这个网站上发现了这个可能为你提供指导的方法:
How can I get a DataGrid to unselect on click when SelectionMode="Extended"?
答案 2 :(得分:0)
如果要注册Selected Selected事件,则需要为DataGrid中的每一行执行此操作。尝试注册DataGrid上的LoadingRow事件,并为每一行注册Selected事件。