WPF-Gruppierung mit einer Sammlung über MVVM
Ich bin neu in WPF und MVVM, so werde ich um Vergebung bitten im Voraus, wenn dies eine dumme Frage.
Problem:
Ich bin versuchen, um eine gruppierte Liste der Elemente, die mit dem MVVM design pattern. Ich kann es mit code-hinter, würde aber lieber eine elegantere Lösung.
Details
- Sagen wir, ich habe eine Sammlung von Tieren: Pferd, wolf, Affe, tiger, Eisbär, zebra, Fledermaus, etc.
- Diese Tiere sind nach Kontinenten gruppiert: Nord-Amerika, Afrika, Antarktis, etc.
Ziel: Innerhalb eines wrap-panel, ich würde gerne zum erstellen von gruppierten Tasten. Zum Beispiel, es wäre ein "Nord-Amerika" GroupBox mit ToggleButtons für jedes Tier in Nordamerika gefunden. Als Nächstes wäre da eine GroupBox mit der überschrift "Afrika" und in der Gruppe Feld wäre, alle Tiere in Afrika.
Mithilfe des MVVM design pattern, kann ich eine Bindung an eine ObservableCollection, und über eine Daten-Vorlage, erstellen die toggle-buttons, die ich brauche. Wo ich zu kämpfen weiß ich nicht, wie Sie die Gruppe der Tiere. Alles was ich brauche, sind Richtlinien zu beachten. Jede Hilfe würde geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Ansicht die Elemente source, um eine CollectionViewSource, dass selbst bindet, um die Tiere Sammlung auf das ViewModel. Die CollectionViewSource können gruppiert werden, so etwas wie dieses:
Werden Sie auch brauchen, um eine Gruppe Stil auf, was auch immer Elemente, die Kontrolle, die Sie haben - so etwas wie dieses
Entnommen aus dem Beispiel auf dieser Seite - http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.groupstyle.aspx
Dass die Einstellung der HeaderTemplate, aber wenn Sie spielen ein bisschen herum sollten Sie in der Lage sein, eine container-Stil für jede Gruppe.
Hoffe, das hilft!
Update:
Ich war nicht allzu sicher, ob das auch so ich hatte ein schnelles bash-code. Vorausgesetzt, der toggle-Taste' ist 'radio-button', das ist, was ich mir ausgedacht habe:
Darüber hinaus können Sie die Anzeige jeder Gruppe als eine GroupBox durch das ersetzen der Zeile
<x:Static Member="GroupStyle.Default" />
mit:Aber die radio-buttons werden nicht gegenseitig auf Ihren eigenen (ich nehme an, weil Sie sind verpackt in ListItem-Steuerelemente, oder etwas anderes, dass macht Sie ein einzelnes Kind von einer übergeordneten Gruppierung). Dass code geklaut wurde/geändert GroupStyle Eintrag in der MSDN-wenn Sie möchten, gehen Sie zurück für mehr Informationen (in Ihrem Beispiel hatte Expander zum ein - /ausblenden von Gruppen): http://msdn.microsoft.com/en-us/library/system.windows.controls.groupstyle.aspx
Lassen Sie mich wissen, wenn ich habe den Punkt verpasst an alle.