2011-08-04 39 views
15

trong ứng dụng WPF của tôi Tôi đang xử lý một sự kiện ListBox SelectionChanged và nó chạy tốt.WPF: làm thế nào để tôi xử lý một nhấp chuột vào một mục ListBox?

Bây giờ tôi cần xử lý sự kiện nhấp chuột (ngay cả đối với mục đã chọn); Tôi đã thử MouseDown nhưng nó không hoạt động. Làm thế nào tôi có thể xử lý một ListBox bấm vào một mục?

Cảm ơn!

+0

này được trả lời ở đây: http://stackoverflow.com/a/821609/58768 –

+0

@modosansreves câu hỏi đó hỏi về Nhấp chuột. Nhấp chuột là đặc biệt. Rõ ràng bị tấn công và biến thành SelectionChanged. DoubleClick không phải là ... –

+0

Đây là một câu hỏi tương tự; mà câu trả lời là một bản tóm tắt tốt đẹp của tất cả các phương pháp tiếp cận. http://stackoverflow.com/q/1271375/1175496 –

Trả lời

6

Có thể thử sự kiện PreviewMouseDown. Sự kiện MouseDown bị nuốt và chuyển đổi thành sự kiện SelectionChanged.

Nhược điểm duy nhất là PreviewMouseDown sẽ xảy ra trước SelectionChanged.

29

Chỉ cần xử lý sự kiện 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 
    } 
} 
3

Listbox trong nội bộ sử dụng chuột xuống để thực hiện lựa chọn thay đổi. Vì vậy, bạn có thể sử dụng tính năng xem trước chuột xuống.

Ngoài preview chuột xuống, bạn có thể sử dụng EventManager.RegisterClassHandler ...

 EventManager.RegisterClassHandler(typeof(ListBoxItem), ListBoxItem.MouseLeftButtonDownEvent, new RoutedEventHandler(EventBasedMouseLeftButtonHandler)); 

    private static void EventBasedMouseLeftButtonHandler(object sender, RoutedEventArgs e) 
    { 
    } 

Hãy cho tôi biết nếu điều này giúp ...

Các vấn đề liên quan