Hallo,
ich arbeite mich gerade in das WPF-Framework ein und habe nun eine ListView-Komponente, die an eine
ObservableCollection gebunden ist. Die Einträge selbst implementieren
INotifyPropertyChanged. Die Einträge in der ListView werden nach dem Wert einer Eigenschaft gruppiert. Mein Problem ist nun, dass sich ein Eintrag nicht umgruppiert, wenn sich der wert der Eigenschaft ändert.
Im Anhang findet ihr ein WPF-Projekt, in dem das Problem demonstriert wird. Dort werden ein paar Objekte mit unterschiedlichen Werten für die Gruppierungs-Eigenschaft
Category erstellt und in die Liste, die als Datenquelle dient, hinzugefügt. Per Knopfdruck wird die
Category-Eigenschaft eines Objektes verändert. Der Wert dieser Eigenschaft auch mithilfe einer normalen Bindung für jeden Eintrag in der Liste angezeigt - und dieser Wert wird aktualisiert.
Das wichtigste ist wohl das XAML-Dokument:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Window.Resources> <CollectionViewSource x:Key="Source" Source="{Binding}"> <CollectionViewSource.GroupDescriptions> <PropertyGroupDescription PropertyName="Category"/> </CollectionViewSource.GroupDescriptions> </CollectionViewSource> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ListView ItemsSource="{Binding Source={StaticResource Source}}" Grid.Row="0"> <ListView.GroupStyle> <x:Static Member="GroupStyle.Default"/> </ListView.GroupStyle> <ListView.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Text}" /> <TextBlock Text=" (" /> <TextBlock Text="{Binding Category}" /> <TextBlock Text=")" /> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> <Button Grid.Row="1" Click="Button_Click">Change</Button> </Grid> </Window> |
Ich hoffe, ihr könnt mir weiterhelfen. Ich habe noch niemanden gefunden, der mein Problem teilt.
Danke im Voraus!
Grüße,
Yogu