myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und Silverlight » Treeview als XML speichern
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Treeview als XML speichern

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Pascal J. Pascal J. ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-3359.png


Dabei seit: 30.06.2012
Beiträge: 4
Entwicklungsumgebung: VS 2012
Herkunft: Klotten


Pascal J. ist offline

Treeview als XML speichern

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,
ich habe ein kleines Problem mit dem speichern einer TreeView in einer XML-Datei. Nach suchen im Internet und rumprobieren, hab ich mir folgendes zusammebgebastelt.

C#-Code:
XmlTextWriter writer = new XmlTextWriter(path, System.Text.Encoding.ASCII);

                writer.WriteStartDocument();
                writer.WriteStartElement("MediaLists");

                foreach (TreeViewItem tvi in treeView.Items) // Hier kommt der Fehler
                {
                    writer.WriteStartElement("Kategorie");
                    writer.WriteAttributeString("Name", tvi.Header.ToString());
                    if (tvi.Items.Count > 0)
                    {
                        foreach (TreeViewItem tvi2 in tvi.Items)
                        {
                            writer.WriteElementString("Eintrag", "Name", tvi2.Header.ToString());
                        }
                    }
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();

                writer.Close();

Mein Problem ist, es kommt immer folgender Fehler:

Fehlermeldung:
System.InvalidCastException: Das Objekt des Typs "System.Xml.XmlElement" kann nicht in Typ "System.Windows.Controls.TreeViewItem" umgewandelt werden.

Ich hab keine Ahnung wie der Fehler Zustande kommen soll. Da der Fehler bei Beginn der ersten foreach-Schleife kommt und ich da im Prinzip nur etwas mit TreeViewItems mache.
30.06.2012 17:19 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
talla talla ist männlich
myCSharp.de-Team (Moderation)

images/avatars/avatar-3214.jpg


Dabei seit: 20.07.2003
Beiträge: 6.863
Entwicklungsumgebung: VS 2010
Herkunft: Esslingen


talla ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

wie befüllst du denn die TreeView? TreeViewItems sind nur in den Items drin, wenn du sie explizit anlegst, ansonsten sinds die Daten die du reinstopfst, in dem Fall ganz offensichtlich ja schon die XmlElemente.

So wie du es versuchst, macht in es in WPF aber so oder so nicht. Du hast Daten, gegen die bindest du ja und genau die Daten speicherst du dann auch. Der Umweg über die TreeView ist doch unnötig.
30.06.2012 17:28 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Pascal J. Pascal J. ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-3359.png


Dabei seit: 30.06.2012
Beiträge: 4
Entwicklungsumgebung: VS 2012
Herkunft: Klotten

Themenstarter Thema begonnen von Pascal J.

Pascal J. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Also die TreeView befülle ich mit Xml-Daten. Die TreeView kann dann zur Laufzeit, falls nötig bearbeitet werden, und soll dann am Ende, wenn das Programm sich schließt, gespeichert werden.

Also, hier mal die XML-Datei, und der entsprechende XAML-Code mit dem ich das dann in die TreeView lade (Das soll nachher als ein Menü dienen).

XML-Code:
<Window.Resources>
        <XmlDataProvider x:Key="MediaLists" />

        <HierarchicalDataTemplate DataType="Kategorie" ItemsSource="{Binding XPath=Kategorie|Eintrag}">
            <TextBlock Text="{Binding XPath=@Name}" />
        </HierarchicalDataTemplate>

        <DataTemplate DataType="Eintrag">
            <TextBlock Text="{Binding XPath=@Name}"/>
        </DataTemplate>

    </Window.Resources>

XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<MediaLists>
    <Kategorie Name="Mediathek">
        <Eintrag Name="Musik" />
        <Eintrag Name="Visualisation" />
    </Kategorie>
    <Kategorie Name="Playlisten">
        <Eintrag Name="Playlist 001" />
        <Eintrag Name="Playlist 002" />
    </Kategorie>
</MediaLists>

Und wie kann ich es jetzt richtig speichern. Arbeite noch nicht so lange mir Wpf, hab sonst immer mit WinForms gearbeitet.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Pascal J. am 30.06.2012 20:14.

30.06.2012 17:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 10 Monate.
Der letzte Beitrag ist älter als 10 Monate.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 19.05.2013 00:10