Hacer que un control de metro de Windows se pueda arrastrar

Quiero hacer que un control de usuario de metro se pueda arrastrar. El usuario debería poder arrastrarlo y soltarlo en otros controles, haciendo que sucedan cosas. ¿Cómo implemento esta funcionalidad?

El único método que descubrí que funciona es usar los controles GridView y ListView. Tienen una propiedad 'CanDragItems' que, cuando es verdadera, significa que cualquier elemento de la vista se puede arrastrar y soltar. Intenté envolver mi control en una vista de cuadrícula o de lista, pero interfieren con el diseño en maneras que no entiendo.

Preferiría no emular la funcionalidad proporcionada por el sistema operativo. Podría hacerlo usando los eventos de toque/ratón sin formato, pero no respetaría correctamente la configuración del sistema, como el tamaño de la zona muerta, lo que evita el arrastre accidental.

preguntado el 12 de junio de 12 a las 22:06

2 Respuestas

lo que diría es que debe crear una propiedad adjunta en la cuadrícula y dibujar un adorno que se conecte a los eventos MouseDown/MouseUp, desde allí configura el ancho de Grid.Column/Grid.Row's Height. Eso haría que la cuadrícula se pudiera arrastrar.

No sugeriré usar la propiedad integrada ShowGridLines ya que solo se usa para la depuración. Puede intentar usar Grid Splitters si lo desea y menos código.

Más sobre las propiedades adjuntas se encuentran aquí Adjuntar propiedades

Respondido 01 ago 12, 14:08

Terminé simplemente emulando la funcionalidad observando los eventos del mouse. Le pido al control que se está arrastrando una copia 'doppleganger' que tenga el mismo aspecto pero que no tenga funcionalidad, la coloco en la cuadrícula de nivel superior y ajusto su transformación de procesamiento para moverla.

Sin embargo, tenga en cuenta que si mis requisitos hubieran sido ligeramente diferentes, podría haber podido usar el manipulación modo/eventos para hacer lo que quería. Son particularmente agradables porque tienen la inercia incorporada, pero son un poco más exigentes con el enfoque y no logré cruzar los límites del control de los padres con él.

Respondido 20 Oct 12, 15:10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.