[WPF] ListBox CollectionView Grouping Problem



  • Morgen Gemeinde,

    folgende Ausgangssituation gibt es in meiner WPF Anwendung:
    Ich hab ne Listbox, und diese definiert sich wie folgt:

    <ListBox x:Name="listBox_Assemblys" Grid.Row="1" VerticalAlignment="Stretch" 
                     ItemsSource="{Binding Source={StaticResource cvs}}"
                     SelectionChanged="listBox_Assemblys_SelectionChanged" 
                     ItemTemplate="{StaticResource groupDataTemplate}" >
                <ListBox.GroupStyle>
                    <GroupStyle ContainerStyle="{StaticResource ContainerStyle}" >
                    </GroupStyle>
                </ListBox.GroupStyle>
            </ListBox>
    

    Die zugehörige CollectionViewSource sieht wie folgt aus:

    <CollectionViewSource x:Key="cvs" >
                    <CollectionViewSource.GroupDescriptions>
                        <PropertyGroupDescription PropertyName="AssemblyName" StringComparison="InvariantCultureIgnoreCase"/>
                    </CollectionViewSource.GroupDescriptions>
                </CollectionViewSource>
    

    Sollte eigentlich keine Probleme machen.
    Der ItemContainer definiert sich wie folgt:

    <Style x:Key="ContainerStyle" TargetType="{x:Type GroupItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Expander Header="{Binding AssemblyName}" IsExpanded="True">
                            <ItemsPresenter />
                        </Expander>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    

    Die Properties die ich da binde sind einfache Strings eines Models, sollte also keine Rolle spielen das zu posten.

    Nun tritt folgendes Phänomen auf: Wende ich den ItemContainerStyle für den GroupStyle an wie es oben schon zu sehen ist. So sehe ich in der ListBox NIE den Header der Gruppe.

    Wenn ich aber folgendes anwende:

    <ListBox x:Name="listBox_Assemblys" Grid.Row="1" VerticalAlignment="Stretch" 
                     ItemsSource="{Binding Source={StaticResource cvs}}"
                     SelectionChanged="listBox_Assemblys_SelectionChanged" 
                     ItemTemplate="{StaticResource groupDataTemplate}" >
                <ListBox.GroupStyle>
                    <GroupStyle  >
                    </GroupStyle>
                </ListBox.GroupStyle>
            </ListBox>
    

    So wird die ÜBerschrifft der Gruppe korrekt angezeigt.
    Selbst wenn ich das DataTemplate des GroupStyles Inline definiere wird der Gruppenheader nicht angezeigt.

    Hat jemand von euch eine Idee?



  • Binde im Expander nur gegen Name. Du bist Style vom GroupItem, und das GroupItem kenn das original Property nicht.
    Beim auswerten der GroupDescriptions werden die gefundenen Werte dem GroupItem.Name zugewiesen.



  • Tatsache das wars, du bist mein Held 😉


Anmelden zum Antworten