2016-05-29 9 views
0

Ich habe in WPF, mit deexpress, eine Situation, wo ich einen DragDropManager mit dem Event-Handler in Code-Behind habe. Wenn ich eine Zeile in das Grid-Steuerelement ziehe, wird der Event-Handler wie erwartet aufgerufen. Mein Problem ist, dass das Steuerelement, das in den Ereignisargumenten eingeschlossen ist, die meisten seiner definierenden Eigenschaften durch Fragezeichen "?" Ersetzt, so dass ich keine identifizierenden Informationen aus dem Quellsteuerelement erhalten kann (aus dem ich die Zeile gezogen habe). Image of the situation described above.Warum haben meine Objekte im Ereignis keine Eigenschaften?

Jetzt folgt ein Ausschnitt meiner Ansicht unten. Das Snippet enthält zuerst das Steuerelement, auf das die Zeile gezogen wird, danach das Steuerelement, aus dem die Zeile gezogen wird. Zur Vereinfachung habe ich die Spalten entfernt.

Um diese Gridcontrol habe ich ein LayoutControl mit einer Reihe von LayoutGroups drin, nur um alles an seinem Platz zu halten.

Ich habe versucht, dies in ein gekochtes Beispielprojekt zu extrahieren und fragte DevExpress Unterstützung zu helfen, aber die Lösungen, die ich bisher bekommen habe, haben nicht geholfen. Die extrahierte Probe funktionierte tatsächlich, ich konnte die Gittersteuerung und alle ihre Eigenschaften sehen. Als ich dann versucht habe, genau das Gleiche wieder in mein ursprüngliches Projekt zu bringen, hat es nicht mehr funktioniert. Der einzige Unterschied war wirklich mit meinen Viewmodels, nicht einige der Dinge, die ich im ursprünglichen Projekt umgesetzt habe.

Könnte es wirklich sein, dass meine Viewmodels einen Einfluss auf die Ereignisargumente haben, obwohl das Ereignis direkt im Code-Behind behandelt wird?

Follow-up Frage: Hat jemand von Ihnen die gleiche Sache erlebt, wo Eigenschaften "verschwinden"? Wenn ja, was war Ihre Lösung?

Antwort

0

Update:

Gerade für den Spaß von ihm, die ich heute hatte gerade versucht, die verschiedenen Eigenschaften von e.SourceControl bekommen, um zu sehen, ob sie tatsächlich (in Ermangelung eines besseren Wortes) aufgelöst werden kann, oder sie würden nur am Ende eine Ausnahme werfen oder Null sein. Hier ist das, was ich getan habe: '?'

private void GridDragDropManager_OnDrop(object sender, GridDropEventArgs e) 
    { 
     var control = e.SourceControl; 
     var name = control.Name; 
     var draggedRowContent = (EntityAttribute)e.DraggedRows[0]; 
     ((DataViewViewModel)DataContext).Execute_DropEntityAttribute(e); 
    } 

erwartete Da der e.SourceControl noch zeigte für die meisten Eigenschaften, aber wenn ich versuche, die verschiedenen Eigenschaften zu holen, bekomme ich tatsächlich das erwartete Ergebnis. Sogar das Hinzufügen des Steuerelements zur Überwachungsliste würde mehr Probleme offenlegen, als nur durch den Debugger zu schauen. Fazit; es scheint, dass der Visual Studio Debugger einige Knicke in der Maschinerie hat, die ausgearbeitet werden sollte.

Verwandte Themen