Tôi có một chương trình với hai lần xem trang WPF cho phép kéo và thả giữa hai. Vấn đề là, nó có thể gây khó chịu khi mở/đóng các mục trên treeview vì di chuyển chuột chỉ một pixel trong khi giữ nút chuột trái kích hoạt chức năng kéo/thả. Có cách nào để xác định khoảng cách di chuyển chuột trước khi nó được coi là kéo/thả không?WPF kéo khoảng cách ngưỡng
8
A
Trả lời
1
Chỉ cần tạo một bộ đệm nhỏ vào mã của bạn để xác định thời điểm kéo bắt đầu.
- cờ chuột xuống
- trên di chuyển chuột - kiểm tra chuột xuống .. nếu có, hãy kiểm tra xem nếu chuyển nó xa hơn bất cứ điều gì đệm bạn chỉ định (3 pixel có lẽ là tốt)
- nếu nó có , bắt đầu kéo.
16
Có tham số hệ thống cho việc này. Nếu bạn có
Point down = {where mouse down event happened}
Point current = {position in the MouseMove eventargs}
thì chuột đã di chuyển khoảng cách kéo tối thiểu nếu
Math.Abs(current.X - down.X) >= SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(current.Y - down.Y) >= SystemParameters.MinimumVerticalDragDistance)
0
Sau this bài viết cho Kéo và Thả thực hiện, bạn sẽ phải xử lý 2 sự kiện chuột để trì hoãn việc kéo cho đến khi con chuột di chuyển một khoảng cách nhất định. Đầu tiên, thêm một trình xử lý cho PreviewMouseDown lưu trữ vị trí chuột ban đầu tương ứng với điều khiển của bạn. Không sử dụng sự kiện MouseDown bởi vì nó là một sự kiện bubbling và có thể đã được xử lý bởi một kiểm soát trẻ em trước khi đạt được kiểm soát của bạn.
public class DraggableControl : UserControl
{
private Point? _initialMousePosition;
public DraggableControl()
{
PreviewMouseDown += OnPreviewMouseDown;
}
private void OnPreviewMouseDown(object sender, MouseButtonEventArgs e) {
_initialMousePosition = e.GetPosition(this);
}
Bên cạnh đó, xử lý MouseMove để kiểm tra khoảng cách di chuyển và cuối cùng bắt đầu hoạt động kéo:
Các vấn đề liên quan
- 1. WPF HwndHost Kéo & Thả
- 2. WPF hủy thao tác kéo
- 3. Kéo điều khiển WPF Popup
- 4. Kéo và thả WinForms để kéo và thả WPF
- 5. Kéo và thả WPF vào DataGrid
- 6. Kéo một hình ảnh trong WPF
- 7. Nhấp và kéo chuột Sự kiện WPF
- 8. Cuộn trong khi kéo và thả (WPF)
- 9. Hộp văn bản WPF Kéo dài
- 10. kéo và thả trong winforms hoặc wpf
- 11. Highcharts Pie Chart Nhãn Ngưỡng
- 12. Cách lấy giá trị ngưỡng từ biểu đồ?
- 13. Kéo và thả WPF giữa các thùng chứa
- 14. Bản vẽ WPF trải dài mà không kéo dài Pen
- 15. WPF Kéo và thả từ ListBox với SelectionMode Nhiều
- 16. WinForms Interop, Kéo và Thả từ WinForms -> WPF
- 17. log4j ngưỡng và loại bổ trợ
- 18. WPF: Khoảng trắng giữa các phần tử trong ngăn xếp
- 19. WPF: Không thể thả kéo dữ liệu lên một ItemsControl
- 20. WPF - thiết lập HorizontalAlignment = Kéo dài đến Textbox trong StackPanel
- 21. WPF: Kéo và thả các tệp ảo vào Windows explorer
- 22. Lỗi Clang về "Ngưỡng rỗng tiềm năng".
- 23. Hai ngưỡng khác nhau trong HighCharts 3.0
- 24. Tính khoảng cách (chênh lệch) OpenCV
- 25. Android: LocationManager động điều chỉnh minTime/minDistance ngưỡng
- 26. WPF: Cách thực hiện Kéo và Thả với các điều khiển lồng nhau (phân cấp)
- 27. WPF: Sắp xếp lại nội dung WrapPanel bằng cách kéo và thả?
- 28. Cách kiểm tra xem cửa sổ có đang bị kéo C# WPF
- 29. Làm cách nào để biết một lần kéo/thả có bị hủy trong WPF
- 30. Làm cách nào để kéo và thả trong WPF trong ứng dụng "Metro Style" của tôi?
Bạn có thể gửi một số mã? – ChrisF