2010-08-24 36 views
5

Tôi muốn nắm bắt sự kiện khi một chế độ xem danh sách được nhấp chuột trái vào một khoảng trống - nghĩa là nhấp vào không có mục nào trong điều khiển danh sách xem.Làm cách nào để xử lý sự kiện khi nhấp vào không gian trống?

Tôi đã tìm kiếm trong danh sách Sự kiện của chế độ xem danh sách nhưng không tìm thấy. Tôi có thể làm cái này như thế nào? Xin vui lòng giúp đỡ!

[Chỉnh sửa] Điều tôi muốn làm nếu tôi có thể nắm bắt sự kiện này: Bỏ chọn tất cả các mục trong chế độ xem danh sách.

+0

Tôi cho rằng đây có thể là một bản sao của http://stackoverflow.com/questions/23133527/wpf-listbox-remove-selection-by-clicking-on-a-blank-spot – J3soon

Trả lời

0

ListBoxItem kiểm soát xử lý nhấp chuột vào ListBox. Bạn có nên:

  • sử dụng PreviewMouseDown sự kiện trên ListBox
  • Thêm xử lý sự kiện trong mã qua myListBox.AddHandler phương pháp

Xem How to Attach to MouseDown Event on ListBox cho lời giải thích và mã ví dụ.

+0

Như một lưu ý phụ: các mục sẽ xử lý các sự kiện MouseDown nhưng các sự kiện NOT MouseUp. Vì vậy, bạn nhận được một sự kiện MouseUp trên ListBox/ListView ngay cả khi nhấp chuột xảy ra trên một mục hoặc trong không gian trống. –

5

Nếu bạn đính kèm trình xử lý cho sự kiện MouseLeftButtonDown trên ListView, nó sẽ chỉ kích hoạt khi các khu vực bên ngoài một ListViewItem được nhấp. Bất kỳ nhấp chuột nào bên trong các mục sẽ được xử lý bởi chính các mục đó để điều khiển hành vi lựa chọn của ListView.

Bạn có thể thực hiện thay đổi đối với vùng có thể nhấp bằng cách điều chỉnh Nền ({x: Null} không thể nhấp, bất kỳ thứ gì khác) và Lề của ListViewItems bằng cách đặt ItemContainerStyle trên ListView. Ngoài ra hãy chắc chắn rằng bạn không sử dụng một nền rỗng trên chính ListView (màu trắng là mặc định, các công trình trong suốt quá).

0

Tôi tìm thấy nếu trước đây tôi đã nhấp một lần vào một mục trong listview (và do đó chọn nó), sau đó nhấp đúp vào không gian trống trong listview kết quả không mong muốn của việc có mục được chọn trước đó đang được thực hiện như thể nó đã được nhấp đúp vào (thay vì sau đó là không gian trống). Để làm được việc này tôi đã sử dụng đoạn mã sau (vb.net):

Private Sub ListView1_MouseLeftButtonDown(sender As Object, e As MouseButtonEventArgs) Handles ListView1.MouseLeftButtonDown 

    ListView1.SelectedIndex = -1 

End Sub 

với mã này ở vị trí cách nhấp đúp vào khoảng trống de-lựa chọn bất kỳ mục đã chọn trước đây và có hiệu quả mong muốn từ hư không xuất hiện để xảy ra cho người dùng khi họ nhấp đúp vào một vùng trống.

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