Wie GroupStyles Arbeit?
Habe ich ein ListView-Steuerelement gebunden ListCollectionView
im ViewModel.
Ich wollte versuchen, gruppieren Sie diese Elemente aber mit einigen Problemen.
Ich setze die Eigenschaft Gruppierung in der VM mit zu beginnen und dann noch ein GroupStyle
.
C#:
ListCollectionView.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
XAML:
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
Aber die Liste ist jetzt nur die Kategorie-Namen, keinen Weg zu sehen, die Elemente selbst.
Bin ich nicht wirklich verstehen voll und ganz, was hier vor sich geht. Wenn ich eine Vorlage erstellen, die für die GroupStyle
was bin ich eigentlich Bindung? Gibt es noch andere Eigenschaften neben Name
?
Habe ich nur noch die GroupStyle
eine ListView, die ich bereits erstellt, wo ich zum Beispiel enthalten eine ItemTemplate
. Ist das etwas, das ist messing mit der GroupStyle
?
Was ist, wenn die Elemente in der Liste gehören zu einer anderen Klasse, und ich wan ' T Gruppe, basierend auf welche Instanz der Klasse Sie gehören (es hat eine ID). Ich hätte dann den Namen der Gruppe als eine Eigenschaft in dieser übergeordneten Klasse. Ist das möglich?
TEILWEISE LÖSUNG:
Problem mit dem Stil angewandt auf die ListView. Ich habe keine Ahnung, was Sie über den Stil war interefering.
VOLLSTÄNDIGE LÖSUNG
War ich nicht mit einer ItemsPresenter
in meiner listbox ControlTemplate
entscheiden, verwenden Sie ein Panel mit IsItemsHost
eingestellt true
. Es scheint ItemsPresenter muss verwendet werden, um GroupStyling, um korrekt zu arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke der Fehler liegt woanders im code.
In der Regel, setzen Sie eine Sammlung von Modelle auf Ihre ViewModel
In Ihrem Blick, binden Sie einen CollectionViewSource zu dieser Sammlung:
Als Nächstes binden wir unsere Liste Kontrolle über das CollectionViewSource (mit einer combo in diesem Beispiel):
Wo es bekommen kann verwirrend ist, dass innerhalb der GroupStyle, Sie sind nicht verbindlich, gegen Ihre Modell, Sie sind verbindlich gegen eine Sammlung von Modelle, die gruppiert (in diesem Fall) die Eigenschaft "GroupName". Die CollectionViewSource Gruppen Ihre Modelle in Sammlungen erweitern CollectionViewGroup. Diese Gruppen haben eine Eigenschaft namens
Name
enthält die gemeinsamen Wert, auf dem Sie Ihre Modelle gruppiert werden (der Wert derGroupName
- Eigenschaft). Also, in der HeaderTemplate, Sie sind verbindlich zu CollectionViewGroup.Name.