Moin Moin!
Ich setze die Bibliothek DockPanel Suite von WeifenLuo ein, um meine Arbeitsfläche zu verwalten. Dabei sind einige Fenster einmalig, andere hingegen können mehrfach (dann nütlich mit verschiedenen Daten) vorkommen.
Bei Programmende werden die Einstellungen mittels DockPanel.SaveAsXml()
gespeichert. Entsprechend werden sie beim Start mit DockPanel.LoadFromXml()
wieder geladen. Für die Deserialisierung der Fenster nutze ich die folgende Funktion:
private IDockContent deserializePanels(string persistName)
{
IDockContent panel;
Type type = Type.GetType(persistName);
switch (type.Name)
{
case "CemeteryPanel":
panel = new CemeteryPanel();
break;
/* ... */
default:
panel = null;
break;
}
return panel;
}
Einmalige Fenster, wie hier etwa CemeteryPanel
stellen dabei nicht das Problem dar, sondern es sind diejenigen, die mehrfach vorkommen können. Denen muss auch noch mitgeteilt werden, welchen Inhalt sie anzeigen sollen, beispielsweise einen Dateinamen.
Meine Überlegung ist nun, den persistName
, der ja von DockContent.GetPersistString()
zur Verfügung gestellt wird, dahingehend zu erweitern, dass dieser einen Verweis auf die Daten enthält.
Hat einer von Euch diese Problematik bereits gelöst? Und wenn ja, wohlmöglich auf einen anderen Weg?
Hinrich
Ja, so habe ich das damals auch bei einem meiner Programme mit der DockPanelSuite gemacht (wenn ich mich noch recht erinnere).
Ich habe dann einfach die Daten als ein String mittels eines Trennzeichens (z.B. '#') erzeugt und dann beim Auslesen mittels String.Split wieder extrahiert.