Laden...

Auf checked items einer WPF TreeView zugreifen

Erstellt von Sun_Boy vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.144 Views
S
Sun_Boy Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren
Auf checked items einer WPF TreeView zugreifen

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

1.044 Beiträge seit 2008
vor 13 Jahren

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

S
Sun_Boy Themenstarter:in
20 Beiträge seit 2010
vor 13 Jahren

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