Hallo zusammen,
ihr hattet mir mal schon geholfen mir meinen Baum mittels mvvm und lazy loading aufzubauen.
Jetzt habe ich allerdings ein Problem. Der Baum steht soweit. Besteht aus ProjectViewModel, StruktViewModel, ComponentViewModel
Verwende ein Hirachicaltemplate für ProjectViewModel und StructureViewModel, ein DataTemplate für ComponentViewModel.
Als Datenkontext dient ein ViewModel (ProjectWrapperViewModel).
Das DataTemplate für Komponenten besitzen eine Checkbox. IsChecked ist gebunden (d.h IsChecked und IsExpanded sind implementiert).
Jetzt habe ich allerdings eine schwierige Aufgabe bekommen. Wenn eine Komponente gechecked wird kann der Benutzer einen Button betätigen.
Danach soll die gecheckte Komponete zum einen in eine ListBox eingetragen werden und zum einen soll der Haken entfernt werden.
Aber wie kann ich auf die gecheckte Komponete ausserhalb des Baumes zugreifen und die IsChecked Eigenschaft verändern?
Wenn ich im Ereignis click des Buttons die Items des Baumes holen möchte bekomme ich logischerweise nur ein Item. Nämlich ProjectView. ProjectView hat zwar Kinder, aber das könnte theoretisch unendlich verzweigt sein:(
Wäre für jeden tip sehr dankbar. Wenn etwas unklar ist, lasst es mich bitte wissen und ich werde versuchen etwas genauer zu erklären.
Vielen Dank!
Viele Grüße
Sunny
Hallo Sun_Boy,
indem du im ViewModel _IsChecked _und _IsExpanded _bereitstellst. Das Click-Event eines Buttons würde hier nicht funktioniert(MVVM), verstande stattdessen Commands.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo zero,
danke für die schnelle Antwort. IsChecked stelle ich im TreeViewItemViewModel bereit.
Die 3 Views ComponentViewModel,ProjectViewModel und StructureViewModel
werden dann davon abgeleitet. Also stelle ich überall IsChecked bereit. Aber brauchen tu ich es nur im ComponentViewModel, da ich nur dort übers DataTemplate meine CheckBox habe.
Aber ich weiss jetzt leider nicht , wie ich über einen Button auf die gecheckten elemente zugreifen kann. Muss ich da auf irgendeinen Container zugreifen, wo die gecheckten Elemente(ComponentViewItem) enthalten sind?
Ich habe leider noch nicht mit Commands gearbeitet. Wo ist der Unterschied zwischen normalen Events und Commands und wie setze ich Commands richtig ein?
Vielen Dank!
Grüße
Sunny