Benutzer mit den meisten Antworten
UWP Drag and Drop im Splitview

Frage
-
Guten Morgen
ich möchte in einem SplitView(SV) ein aus in der Pane vorhandenes Image in den Content-Bereich per D&D ziehen. beim Ablegen soll der Name des Images und die Image-Source(Pfad der Datei) an eine Klasse übergeben werden, die dann ein neues Objekt erzeugt. Das Original soll im Pane-Bereich verbleiben.
nun ist es so, das ich in den entsprechenden Event _Drop(object sender, DragEventArgs e) diese benötigten Daten extrahieren kann, da die Data und die Dataview "Null" sind. Auch im _DragStarting(UIElement sender, DragStartingEventArgs args) lassen sich die Daten nicht finden. (weder in args noch im Sender).
Wie kann ich auf die Objektdaten des Drag-Objektes zugreifen?
SisualStudio express 2012 C#
Antworten
-
Lege dir einfach eine Variabel an vom Typ UIElement oder Image wenn Du nur Bilder per D&D verarbeiten willst.
Diese Variabel setzt Du dann bei DragStarting. So in der Art
UIElement dragItem; private void StackPanel_Drop(object sender, DragEventArgs e) { if ( dragItem is Image) { var bitmap = (dragItem as Image).Source as BitmapImage; var src = bitmap.UriSource; } } private void StackPanel_DragOver(object sender, DragEventArgs e) { e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Copy; } private void Image_DragStarting(UIElement sender, DragStartingEventArgs args) { dragItem = sender; }
<Grid x:Name="rootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="23*"/> </Grid.ColumnDefinitions> <StackPanel> <Image CanDrag="True" AllowDrop="True" Source="Assets/BackRepeat.png" DragStarting="Image_DragStarting" /> </StackPanel> <StackPanel Background="CadetBlue" Grid.Column="1" AllowDrop="True" Drop="StackPanel_Drop" DragOver="StackPanel_DragOver"> </StackPanel> </Grid>
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Bearbeitet Thomas Wycichowski Freitag, 2. Juni 2017 13:18
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 7. Juni 2017 10:42
- Als Antwort markiert kudlmudl Donnerstag, 8. Juni 2017 16:09
Alle Antworten
-
hallo Thomas, Danke für die Schnelle Antwort.
Das "Tutorial" im Link hatte ich bereits durchgearbeitet. Es funktioniert auch hervorragend, jedoch nur, wenn ich ein Image von Außen in die App ziehe. Ich möchte jedoch ein Image aus dem Pane-Bereich eines Split-Views in den Content-Bereich des selben SV ziehen. und hier liegt das Problem das die Zeile (aus dem Tutorial _Drop-Event)
if (e.DataView.Contains(StandardDataFormats.StorageItems))
mit FALSCH ausgewertet wird. Und wie gesagt die Daten sind leer.
-
Lege dir einfach eine Variabel an vom Typ UIElement oder Image wenn Du nur Bilder per D&D verarbeiten willst.
Diese Variabel setzt Du dann bei DragStarting. So in der Art
UIElement dragItem; private void StackPanel_Drop(object sender, DragEventArgs e) { if ( dragItem is Image) { var bitmap = (dragItem as Image).Source as BitmapImage; var src = bitmap.UriSource; } } private void StackPanel_DragOver(object sender, DragEventArgs e) { e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Copy; } private void Image_DragStarting(UIElement sender, DragStartingEventArgs args) { dragItem = sender; }
<Grid x:Name="rootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="23*"/> </Grid.ColumnDefinitions> <StackPanel> <Image CanDrag="True" AllowDrop="True" Source="Assets/BackRepeat.png" DragStarting="Image_DragStarting" /> </StackPanel> <StackPanel Background="CadetBlue" Grid.Column="1" AllowDrop="True" Drop="StackPanel_Drop" DragOver="StackPanel_DragOver"> </StackPanel> </Grid>
Gruß, Thomas
Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!
- Bearbeitet Thomas Wycichowski Freitag, 2. Juni 2017 13:18
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 7. Juni 2017 10:42
- Als Antwort markiert kudlmudl Donnerstag, 8. Juni 2017 16:09