C#ListBox选择未更改事件?

时间:2017-07-05 14:11:46

标签: c# wpf xaml visual-studio-2015 listbox

如果用户再次点击同一项目,我希望能够取消选择create trigger DPTrigger on DefaultProperties for insert, update, delete as if insert then begin insert into DefaultProperties_Audit(OldDefaultID, OldKey_, OldValue, OldPid_FK, Modifier, EntryDate, Operation) select DefaultPropertiesID, Key_, Value, ProcessID_FK, user_name(), GETDATE(), 'insertion' from inserted end endif if update then doSomething() endif if delete then doSomethingElse() endif 中的项目。每个人都使用ListBox SelectionChanged事件,但是当选择未更改时,这显然不会触发。

也没有ListBoxes事件,人们推荐的事情。 Visual Studio C#2015不包含此类事件。

enter image description here

我已尝试使用Click事件,但是MouseLeftButtonDown填充ListBox后,此事件不会再触发。另外,我考虑过将鼠标事件附加到ListBoxItems,但这似乎不切实际,因为每次填充ListBoxItems时我都必须附加n个新事件。

有没有人有这个问题的XAML解决方案?

2 个答案:

答案 0 :(得分:1)

您可以像我在此处建议的那样处理PreviewMouseLeftButtonDown容器的ListBox事件。

How to disable deselection of items in ListView?

答案 1 :(得分:0)

我最初选择 mm8 的答案,但我后来才知道SelectedIndex事件期间PreviewMouseLeftButtonDown没有更新,这是我间接要求的一项功能在问题中。在使用此事件时,您实际上会获得之前的过时SelectedIndex值。

我发现如果您使用MouseLeftButtonUp事件,它实际上会触发,与MouseLeftButtonDown事件不同,我获得SelectedIndex变量的最新值。

对于任何关心的人,这是System.Windows.Controls的{​​{1}}版本。我尝试使用ListBox Systems.Windows.Forms实现,但它不支持多行开箱即用,与ListBox不同,所以我放弃了这个想法。

<强> tldr

使用Controls事件。