Laden...

WeifenLuo: Fenster wieder herstellen

Erstellt von hinrich vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.732 Views
H
hinrich Themenstarter:in
116 Beiträge seit 2008
vor 13 Jahren
WeifenLuo: Fenster wieder herstellen

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

4.941 Beiträge seit 2008
vor 13 Jahren

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.