Hallo zusammen
Verwendetes DI-Framework: Ninject
Technologie: WPF mit MVVM
Um etwas ins Clipboard zu speichern und daraus zu lesen, muss das Objekt Serializable sein. Um etwas zu deserialisieren, braucht es einen parameterlosen Konstruktor.
Nur... Wir verwenden DI um z.B. die Übersetzungs-Funktionalität zu injecten. Dann können Werte für die View im ViewModel übersetzt werden
ViewModel:
public Konstruktor(ILocalization loc) {...}
string Label{get;set;}
string TranslatedLabel {
get { return this.loc.Translate<string>(this.Label); }
}
In der View wird dann nur TranslatedLabel gebunden. (in der View zu übersetzen wäre möglich, jedoch soll dieses einfache Beispiel aufzeigen, wo das Problem liegt - gibt noch andere Abhängigkeiten)
Wenn ich nun einen leeren Konstruktor im ViewModel erzeuge, sind all meine Injections natürlich null wenn ich das VM wiederherstelle mit Clipboard.GetData("meinVMFormat");
Wie würdet ihr diese Aufgabe lösen?
Die einzige Möglichkeit die mir einfällt ist, die nötigen Abhängigkeiten in die Paste-Implementierung zu injecten, das VM wiederherzustellen (in der Paste Implementierung) und dann die VM Abhängigkeiten von der Paste-Implementation aus zu setzen. Hab ich aber noch nicht getestet, weil ich eine schönere Lösung finden möchte...
Merci im Voraus und gruess
Martin
Hallo,
geschickter wäre es wohl die eigentlichen Daten, sprich das Model und nicht das ViewModel übers Clipboard zu verteilen. Das ViewModel stellt an sich ja meist nur ne geeignete Ansicht für die View auf die Daten bereit. Wenn du die Daten übers Clipboard bekommst, solltest du auch kein Problem haben dir beim Empfänger das ViewModel wieder mit den richtigen Abhängigkeiten zu erstellen.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo talla
Merci für deine Antwort. Stimmt - eigentlich wäre es am saubersten, zuerst die VM-Daten ins Model zu schreiben, den entsprechenden Datensatz aus dem Model zu kopieren, ins Model pasten und das Model wieder ins VM zu laden.
Dieser Ansatz wird sicher auch diskutiert.