Schmurgel Geschrieben 1. April 2010 Teilen Geschrieben 1. April 2010 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 ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 1. April 2010 Teilen Geschrieben 1. April 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Mcolli Geschrieben 2. April 2010 Teilen Geschrieben 2. April 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schmurgel Geschrieben 2. April 2010 Autor Teilen Geschrieben 2. April 2010 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 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.