2016-06-13 7 views
6

Ich versuche Upload-Dateien per Drag & Drop-Funktionalität zu haben. Ich war erfolgreich in der Lage, die UI-Arbeit abzuschließen, aber ich habe Probleme beim Zugriff auf das Objekt, das im Back-End gelöscht wurde. Ich konnte das Objekt erfolgreich greifen, wenn ich hinter dem Code stand, aber ich versuche, den MVVM-Ansatz zu wählen.Drag & Drop-Dateien MVVM mit Caliburn

AttachmentView.xaml

Cal:Message.Attach="[Drop] = [SaveFile($eventArgs)]" 

AttachmentViewModel.cs

public virtual async void SaveFile(DragEventArgs e) 
{ 
     var fileStream = new FileStream([File name goes here], FileMode.Open, FileAccess.Read); 
} 

ich EventArgs versucht habe, konnte ich die Datei Objekt-Eigenschaft nicht gefunden. DragEventArgs ist null, wenn der Code getestet wird.

Arbeitslösung für hinter Code

AttachmentView.xaml.cs

private void ImagePanel_Drop(object sender, DragEventArgs e) 
{ 

    if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
    { 
     // Note that you can have more than one file. 
     string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); 

     // Assuming you have one file that you care about, pass it off to whatever 
     // handling code you have defined. 
     Upload(files); 
    } 
} 

Antwort

6

Sie können eine EventTriggerBehavior verwenden. Sie werden "Drop Event" an einen Befehl senden. Wahrscheinlich benötigen Sie einen Konverter für die Ereignisargumente. Hier ist ein Beispiel mit einer Listview.

<core:EventTriggerBehavior EventName="SelectionChanged"> 
     <core:InvokeCommandAction InputConverter="{StaticResource SelectionChangedConverter}" 
     InputConverterParameter="{Binding ElementName=CapturasListView}" 
     Command="{Binding OpenCapturaCommand}" /> 

</core:EventTriggerBehavior> 

Hier einige Links, die den gleichen Ansatz erklären:

4

die Dokumentation für Caliburn Checking out, die ich nie benutzt habe, es scheint, dass Sie Ereignis und Aktion fehlen:

Cal:Message.Attach="[Event Drop] = [Action SaveFile($eventArgs)]" 

Nach der Dokumentation Spickzettel hier http://caliburnmicro.com/documentation/cheat-sheet

+0

Nein, aber ich wollte nur helfen. Ich habe es sogar in meinem Kommentar gesagt, dass ich es nicht getan habe. Hast du gelesen was ich geschrieben habe? –