none
UWP Drag and Drop im Splitview RRS feed

  • 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#

    Freitag, 2. Juni 2017 07:03

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!

    Icon für UWP


    Freitag, 2. Juni 2017 13:17

Alle Antworten

  • Hallo,

    schau dir mal den Link an 


    Gruß, Thomas

    Sage nie, ich kann es nicht - sage nur, ich kann es noch nicht!

    Icon für UWP

    Freitag, 2. Juni 2017 10:09
  • 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. 

    Freitag, 2. Juni 2017 10:42
  • 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!

    Icon für UWP


    Freitag, 2. Juni 2017 13:17