Manuell-Gruppe DataGrid Elemente
Ich brauchen, um eine Daten-grid und meine Daten sieht wie folgt aus:
firstName, lastName, Strasse, PLZ, Stadt, Land, Bild
In meinem datagrid-ich werde nur zeigen, firstName, lastName und Bild, sondern es werden gruppiert nach Stadt.
Update
Der code unten zeigt gruppierte Elemente, aber die drei Produkte, die ich anzeigen möchten (Vorname, Nachname, Bild) sind, gefolgt von allen Elementen (firstName, lastName, Strasse, PLZ, Stadt, Land, Bild) pro Zeile. Ich glaube, ich habe zu ersetzen, die <ItemsPresenter />
aber das ist nur Spekulation..
Kann mir jemand helfen, ich kann nicht verwalten, dies auf meine eigene...
<Grid>
<DataGrid ItemsSource="{Binding GroupedMovables}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Preview" Width="SizeToCells" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Name="Preview" Height="20" Source="{Binding Image}" HorizontalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="first name" Binding="{Binding FirstName}" />
<DataGridTextColumn Header="last name" Binding="{Binding LastName}" />
</DataGrid.Columns>
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=City}" FontWeight="Bold" Padding="3"/>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
<TextBlock Text="{Binding Path=ItemCount}" Margin="8,0,4,0"/>
<TextBlock Text="Element(s)"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
</DataGrid>
</Grid>
Bitte erläutern Sie: was funktioniert nicht genau? Hat der code einen Fehler erzeugen? Falls ja, was ist der Fehler??? Hat es falsch angezeigt? Wenn ja, wie funktioniert die Anzeige jetzt, und wie lässt sich das unterscheiden von dem, was Sie wollen? Danke.
Ich aktualisiert meine Erklärung, hoffe, die Sache jetzt klarer.
Und was passiert, wenn Sie entfernen
Überprüfen Sie bitte meine Antwort weiter unten und vergleichen Sie es mit Ihrem code.
Ich aktualisiert meine Erklärung, hoffe, die Sache jetzt klarer.
Und was passiert, wenn Sie entfernen
<ItemsPresenter />
?Überprüfen Sie bitte meine Antwort weiter unten und vergleichen Sie es mit Ihrem code.
InformationsquelleAutor iop | 2012-04-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg für die Gruppierung ist die Verwendung eines
CollectionView
(für mehr details: Wie zu Navigieren, Gruppieren, Sortieren und Filtern von Daten in WPF). Das folgende ist eine einfache proof-of-concept-Anwendung, die ich für Sie erstellt, um zu zeigen, wie Sie eineCollectionView
für die Gruppierung von Daten, mit:Diese Klasse repräsentiert eine Zeile im DataGrid:
MaindWindow code hinter:
DataGrid-XAML-code:
Ist das Ergebnis:
Weitere Informationen zum styling der DataGrid-Gruppen bitte überprüfen Sie in diesem post: WPF DataGrid-Steuerelement > Gruppierung
versuchen zu laufen, meine gepostete code in einer neuen Beispiel-Projekt, funktioniert es.
überprüfen Sie die Ausgabe-Fenster, wenn Sie ausführen dieses Fenster, um zu sehen, wenn es Probleme mit Ihrer Bindung an 'GroupedMovables'
Warum header-template ist nicht erschienen, auf die Produktion?
InformationsquelleAutor Mohammed A. Fadil