Я хочу получать уведомления, когда элемент в ListBox щелкает мышью, независимо от того, выбран он уже или нет.
Я поискал и нашел это: (http://kevin-berridge.blogspot.com/2008/06/wpf-listboxitem-double-click.html см. комментарии)
private void AddDoubleClickEventStyle(ListBox listBox, MouseButtonEventHandler mouseButtonEventHandler)
{
if (listBox.ItemContainerStyle == null)
listBox.ItemContainerStyle = new Style(typeof(ListBoxItem));
listBox.ItemContainerStyle.Setters.Add(new EventSetter()
{
Event = MouseDoubleClickEvent,
Handler = mouseButtonEventHandler
});
}
//Usage:
AddDoubleClickEventStyle(listView1, new MouseButtonEventHandler(listView1_MouseDoubleClick));
Это работает, но делает это DoubleClick
. Однако я не могу заставить его работать одним щелчком мыши. Я пробовал MouseLeftButtonDownEvent
- похоже, что MouseClick
события нет, но оно не вызывается.
Немного более общий побочный вопрос: как я могу увидеть, какие события действительно существуют, какие обработчики им соответствуют и когда они на самом деле что-то делают? Например, что мне говорит о том, что для MouseDoubleClickEvent
мне нужен MouseButtonEventHandler
? Может, для MouseLeftButtonDownEvent
нужен другой обработчик и поэтому он не работает?
Я также пробовал создать подкласс ListBoxItem
и переопределить OnMouseLeftButtonDown
, но он тоже не вызывается.
Марк