Tengo un programa con dos vistas de árbol de WPF que permiten arrastrar y soltar entre los dos. El problema es que puede ser molesto abrir/cerrar elementos en las vistas de árbol porque mover el mouse un solo píxel mientras se mantiene presionado el botón izquierdo del mouse activa la función de arrastrar/soltar. ¿Hay alguna manera de especificar qué tan lejos debe moverse el mouse antes de que se lo considere una operación de arrastrar/soltar?Umbral de distancia de arrastre WPF
Respuesta
Simplemente crea un pequeño búfer en tu código que determina cuándo se inicia el arrastre.
- ratón pare a
- al mover el ratón - comprobar ratón hacia abajo .. si es así, comprobar para ver si su movido más lejos que el búfer que especifique (3 píxeles es probablemente bueno)
- si tiene , inicia el arrastre.
Hay un parámetro de sistema para esto. Si tiene
Point down = {where mouse down event happened}
Point current = {position in the MouseMove eventargs}
entonces el ratón se ha movido la distancia mínima resistencia si
Math.Abs(current.X - down.X) >= SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(current.Y - down.Y) >= SystemParameters.MinimumVerticalDragDistance)
Siguiendo this artículo para arrastrar y soltar aplicación, que tendría que manejar 2 eventos del ratón con el fin de retrasar el arrastre hasta que el mouse se haya movido una cierta distancia. Primero, agregue un controlador para PreviewMouseDown que almacena la posición inicial del mouse relativa a su control. No use el evento MouseDown porque es un evento de burbujeo y puede haber sido manejado por un control secundario antes de alcanzar su control.
public class DraggableControl : UserControl
{
private Point? _initialMousePosition;
public DraggableControl()
{
PreviewMouseDown += OnPreviewMouseDown;
}
private void OnPreviewMouseDown(object sender, MouseButtonEventArgs e) {
_initialMousePosition = e.GetPosition(this);
}
Además, manejar MouseMove para comprobar la distancia recorrida y, finalmente, iniciar la operación de arrastre:
- 1. Arrastre WPF Popup control
- 2. WPF cancela la operación de arrastre
- 3. WPF arrastre y suelte en DataGrid
- 4. Arrastre de un control de usuario de WPF
- 5. Scipy.cluster.hierarchy.fclusterdata + medida de distancia
- 6. WPF cursor de arrastre en los cursores predeterminados
- 7. lista de WPF arrastre sin anular la selección
- 8. umbral de modelo de markov oculto
- 9. Editar algoritmo de distancia
- 10. coincidencia aproximada con filtro umbral de C#
- 11. Highcharts Pie Chart Etiqueta Umbral
- 12. Imagen de arrastre al tocar
- 13. WPF arrastre y suelte de un ListBox que tiene SelectionMode = Extended
- 14. Transformada de distancia .NET
- 15. Umbral de adaptación Los efectos nocivos de la binarización
- 16. ¿Hay un estándar para criptosistemas de umbral (m de n)?
- 17. El umbral de apéndice de Log4net no funciona
- 18. Error de arrastre de JQuery en cromo
- 19. jQuery UI múltiples de selección de arrastre
- 20. Encontrar colores HEX similares usando un umbral
- 21. eficiente umbral rojo usando HSV en OpenCV
- 22. arrastre a otro proceso
- 23. html5 - arrastre un lienzo
- 24. android arrastre view smooth
- 25. JTable - arrastre y suelte
- 26. clon node en arrastre
- 27. Definición del umbral de escala para Azure Web Roles
- 28. ¿Cómo obtener el valor de umbral del histograma?
- 29. Espere a alcanzar un umbral de precisión con getCurrentPosition
- 30. Arrastre diseño de 2 columnas Re-considerable
Se puede publicar algo de código? – ChrisF