0

所以我有一个 WPF 应用程序和一个数据网格,不可编辑,启用了全行选择,我试图用数据网格行创建一种开关功能。但是,我似乎无法为简单的行选择找到合适的事件。如果我再次单击已选择的项目,则有SelectionChanged, 这不起作用。很简单Click(有很多类型),但是所有这些都发生在实际选择行之前,所以如果我尝试在单击时获取选定的项目,我将得到空值。还有一些其他事件(我忘记了)需要单击两次,这并不是我真正想要的。我的想法已经不多了,也许有一些好的事件组合或某种方式来覆盖它们,或者我只是错过了一些东西?

4

3 回答 3

2

考虑到您提供的信息,@Yatrix 的解决方案是完全有效的!

但是你已经回应了..

在选择行之前发生,因此不起作用:/

然后,您在这里缺少一些东西。即使 LeftMouseDown \ LeftMouseUp \ PreviewLeftMouseDown \ Up 事件发生在选择事件之前,它们也会知道该行是否已被选中。这样他们就可以取消选择它然后做

e.Handled=true

.... 以便在鼠标事件之后永远不会调用选择,从而避免重新选择。

试着让我知道。

于 2012-05-16T07:30:03.927 回答
0

PreviewMouseDown或者PreviewMouseLeftButtonDown可能会有所帮助。我还在这个网站上找到了这个可以为你提供方向的东西:

当 SelectionMode="Extended" 时,如何让 DataGrid 在单击时取消选择?

于 2012-05-15T20:08:23.143 回答
0

如果您想注册行 Selected 事件,您需要为 DataGrid 中的每一行注册。尝试注册 DataGrid 上的LoadingRow事件,并为每一行注册Selected事件。

于 2012-05-15T20:42:30.537 回答