Estoy tratando de implementar la funcionalidad de arrastrar y soltar en una aplicación de superficie que se genera utilizando el patrón MVVM. Estoy luchando para encontrar un medio para implementar esto mientras me adhiero al patrón MVVM. Aunque estoy tratando de hacer esto dentro de una Aplicación de Superficie, creo que la solución es lo suficientemente general como para aplicarla también a WPF.Arrastrar y soltar en MVVM con ScatterView
Estoy tratando de producir las siguientes funcionalidades:
- contactos del usuario FrameworkElement dentro de un ScatterViewItem para comenzar una operación de arrastre (una parte específica de la ScatterViewItem inicia el arrastrar/soltar funcionalidad)
- Cuando la operación de arrastre comienza una copia de ese ScatterViewItem se crea e impone sobre el ScatterViewItem original, la copia es lo que el usuario arrastrará y finalmente soltará
- El usuario puede colocar el elemento en otro ScatterViewItem (ubicado en un ScatterView por separado)
La interacción general es bastante similar a la aplicación ShoppingCart proporcionada en Surface SDK, excepto que los objetos fuente están contenidos en un ScatterView en lugar de un ListBox.
No estoy seguro de cómo proceder para habilitar la comunicación adecuada entre mis ViewModels con el fin de proporcionar esta funcionalidad. El problema principal que he encontrado es replicar ScatterViewItem cuando el usuario contacta con FrameworkElement.
¿Hay alguna posibilidad de ver algún código? ¿Cómo ScatterViewItems contiene controles para niños? ¿Cómo lo vinculan a un modelo de vista? –
Trataré de proporcionar una respuesta 'real' más tarde, pero básicamente una operación de arrastrar y soltar ocurre principalmente en las vistas.El hecho de que esté ocurriendo un arrastre probablemente no requiera ninguna comunicación con el modelo de vista de la vista original hasta que ocurra la caída. Cuando se detecta la caída, puede llamar a un método o ejecutar un comando en su modelo de vista y pasar la información sobre lo que se eliminó. La máquina virtual lo agregaría a una lista que está vinculada a su vista de dispersión de destino. La vista de origen también debe procesar la llamada completada y pasarla a su modelo de vista. –