在我的WPF应用程序中,我正在处理一个ListBox SelectionChanged事件,它运行正常。
现在我需要处理点击事件(即使已经选择的项目);我尝试过MouseDown,但它不起作用。如何处理ListBox单击某个项目?
答案 0 :(得分:31)
只需处理PreviewMouseDown事件:
private void listBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var item = ItemsControl.ContainerFromElement(listBox, e.OriginalSource as DependencyObject) as ListBoxItem;
if (item != null)
{
// ListBox item clicked - do some cool things here
}
}
答案 1 :(得分:6)
也许尝试PreviewMouseDown
事件。吞下MouseDown
事件并将其转换为SelectionChanged
事件。
唯一的缺点是PreviewMouseDown
将出现在SelectionChanged
之前。
答案 2 :(得分:3)
列表框内部使用鼠标按钮执行更改选择。因此,您可以使用预览鼠标按下事件。
除了预览鼠标按下,您还可以使用EventManager.RegisterClassHandler ...
EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler));
private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e)
{
}
如果这有帮助,请告诉我......