Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich habe folgendes Problem mit einem TreeView in WPF:

Ich erstelle mir eine Liste mit verschiedenen Informationen und diese Liste beinhaltet auch noch wieder eine Liste.

Durch viele berechnungen usw wird diese gefüllt.. alles chic soweit :-)

nun möchte ich diese Liste in einem treeView ausgeben lassen...

ich adde die Items per code behind und das funktioniert auch alles einwandfrei...

ich speichere dabei noch bestimmte Informationen im tag Feld der treeViewItems...

diese möchte ich nun gerne auf mousclick abrufen um sie z.B. in einem Texfeld anzuzeigen...

mein Problem ist, dass ich auf google suche immer nur gefunden habe, dass man das alles per binding machen soll... so habe ichs aber nicht gemacht... ist meine Lösung generell verkehrt ?? verbessert sich die Performance wenn ich das treeView per Binding fülle ??

ausßerdem bekomme ich es einfach nicht hin das selectierte Item tag auszugeben und wie gesagt ist das Programm extrem Resourcen fressend... also wenn ich die treeView gefüllt habe (das können extrem viele elemente werden --> meist 4-7 main Nodes mit 20 - 400 childs)

hier mal teile meines codes:

mein Datensatz für das treeView:

public class TreeListe

    {

        public string NetzMaske { get; set; }

        public string Bezeichner { get; set; }

        public List<TreeListPart> TreePart { get; set; }

    }


public class TreeListPart

    {

        public string NetzID { get; set; }

        public string Breadcast { get; set; }

        public int HostAlle { get; set; }

        public string Teilnetz { get; set; }

    }
der xaml Code für das treeView:

<TreeView TreeViewItem.Selected="TreeViewItem_Selected" Margin ="10,107,10,10" Name="treeView" HorizontalAlignment="Left" Width="266">

so fülle ich das treeView:
private void buttonTreeView_Click(object sender, RoutedEventArgs e)

        {

            foreach (TreeListe item in tree)

            {

                TreeViewItem Master = new TreeViewItem();

                Master.Header = item.Bezeichner;

                treeView.Items.Add(Master);


                foreach (TreeListPart item2 in item.TreePart)

                {

                    TreeViewItem Slave = new TreeViewItem();

                    Slave.Header = item2.Teilnetz;

                    Slave.Tag = (item2.NetzID + " bis " + item2.Breadcast);

                    Master.Items.Add(Slave);

                }

            }

        }
und hier die funktion zum Abrufen der Tags.. weiß aber irgendwie nicht was da rein soll:
private void TreeViewItem_Selected(object sender, RoutedEventArgs e)

        {

            //??????


        }

wie gesagt... das füllen der treeView funktioniert sehr gut.. nur kostet das Navigieren im treeView massiv Perfomance und ich bekomme die tag's nicht ausgelesen auf Mouseclick...

danke schonmal für jegliche Mühen ;-)

Geschrieben

mein Problem ist, dass ich auf google suche immer nur gefunden habe, dass man das alles per binding machen soll... so habe ichs aber nicht gemacht... ist meine Lösung generell verkehrt ??

Nicht direkt verkehrt, nur meines Erachtens nach zu sehr an Windows.Forms-Verwaltung angelehnt.

Ich würde empfehlen, dass du dir das MVVM Pattern mal anschaust.

Geschrieben

Auf jeden Fall Bindings nutzen!!!11Elf

Was musst Du machen ?

1. ObservableList<Type> nutzen statt List<Type>

2. Deine Objecte vom Typ <Type> ^^ von "INotifyPropertyChanged" erben lassen

3. (Wenn Deine Treeview ItemTemplates verwenden soll) Eine weitere Klasse implementieren, die dafür sorgt, dass auch das Ereignis "PropertyChanged", das deine Objecte durch die Implentierung von "INotifyPropertyChanged" werfen, dieses Ergeignis an die ObservableList weiterreichen. Diese Klassen den Instanzieren und der Treeview als [.....ich guck morgen nach] Property zuweisen. Das ist ein Workaround für einen bekannten Bug im .Net 3.5 Frame work !!!!!

Morgen mach ich ein Sample Code für Dich.

Geschrieben

Vielen dank schonmal für die Antworten..

das mit den mvvm Pattern finde ich ehrlich gesagt garnicht so leicht...

Ist auch allgemein ne ganz schöne Umgewöhnung von der normalen form zu wpf :rolleyes:

aber danke das ihrs mir nochmal erklärt allerdings setzte ich mich vorraussichtlich erst wieder nach ostern an den code !!!

also bis dahin schonmal fohes eier suchen ;) und thx for the help :D

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...