Nella mia app, un utente può selezionare uno Image
e trascinarlo su un Grid
, per giocare con esso. Lo faccio gestendo l'evento PointerEntered
dello Grid
. Qui rilevo se l'utente ha selezionato un'immagine e se l'utente sta tenendo premuto il pulsante del mouse.Let image ManipulationMode capture pointer
Ora voglio mettere il Image
sulla griglia, e passare il puntatore (ancora premuto) al mio Image
, in modo che il Image
utilizza il proprio ManipulationStarted
, ManipulationDelta
e ManipulationCompleted
eventi. Questo dovrebbe consentire all'utente di trascinare l'immagine con un movimento fluido dall'elenco di immagini a Grid
, invece di dover rilasciare e fare clic sull'elemento.
ho cercato rilasciando il puntatore dalla sender
in PointerEntered
, e catturare utilizzando CapturePointer
, ma questo non sembra funzionare, anche se i rendimenti CapturePointer
true
.
ecco il codice che uso per il PointerEntered
evento:
private void DrawingArea_OnPointerEntered(object sender, PointerRoutedEventArgs e)
{
// If we enter the grid while dragging and we have an image that was dragged
if (e.Pointer.IsInContact && CurrentDraggedImage != null)
{
DrawingArea.Children.Add(CurrentDraggedImage);
// Move it to the location we're currently at
var transform = (CurrentDraggedImage.RenderTransform as CompositeTransform);
transform.TranslateX += e.GetCurrentPoint(DrawingArea).RawPosition.X - DrawingArea.ActualWidth/2;
transform.TranslateY += e.GetCurrentPoint(DrawingArea).RawPosition.Y - DrawingArea.ActualHeight/2;
// This works (I think)
(sender as UIElement).ReleasePointerCaptures();
// This doesn't work (or it isn't what I need), but returns true
CurrentDraggedImage.CapturePointer(e.Pointer);
// Get ready for a new image
CurrentDraggedImage = null;
}
}
Il mio codice manipolazione è in questa risposta:
https://stackoverflow.com/a/32230733/1009013
Avete considerato un approccio diverso: utilizzare CanDragItems incorporato da ListView e impostare AllowDrop come vero nell'area di disegno? –
@JustinXL No, ma suppongo che questo dia lo stesso posto di blocco ... lo controllerò e tornerò da te. – vrwim
@JustinXL sì, lo stesso problema, non posso spostare il puntatore da un'azione di trascinamento all'altra ... – vrwim