Laden...

[Silverlight] Listbox, Wrappanel mit Gruppierung

Erstellt von Easyrider vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.064 Views
E
Easyrider Themenstarter:in
200 Beiträge seit 2006
vor 12 Jahren
[Silverlight] Listbox, Wrappanel mit Gruppierung

Hallo,

ich bin gerade bei einem technischen Problem und bräuchte kurz eure Hilfe:

In meiner Anwendung ist eine Listbox mit einem Wrappanel als ItemsPanel. Dieses Wrappanel hat ein DataTemplate, um die einzelnen Items grafisch darstellen zu können. Via einem Slider und einer ViewBox ist zusätzlich ein Zoom implementiert.

<ListBox x:Name="listbox2" SelectionMode="Extended"
                     ItemsSource="{Binding Converter={StaticResource GroupingItemsControlConverter},
                     ConverterParameter={StaticResource SimpleGroupingItemsControlConverterParameter}}"
                     SelectionChanged="ListBox_SelectionChanged"
                     Height="280" Width="570"
                     HorizontalAlignment="Left" VerticalAlignment="Top">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <toolkit:WrapPanel Orientation="Horizontal" Width="540" Loaded="WrapPanel_Loaded" />
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
            </ListBox>
...
<DataTemplate>
                        <Viewbox Stretch="UniformToFill">
                            <Border BorderBrush="DarkGray" BorderThickness="1" Margin="5,5,5,5">
                                <StackPanel Orientation="Vertical" Width="100" Height="50">
                                    ...
                                </StackPanel>
                            </Border>
                        </Viewbox>
                    </DataTemplate>
...

Meine Ziel ist es jetzt, zusätzlich zu diesen Funktionalitäten eine Gruppierung einzubauen. Wenn ich darin z.B. 15 Tiere habe, haben diese jeweils eine bestimmte Spezies (Fisch, Katze, Hund). Die Items sollen bei aktivieren der Gruppierung mit einem Expander angezeigt werden.

Die gängigen Lösungen im Internet für Gruppierungen funktionieren leider nicht. Sobald ich den Wert ItemWidth oder ItemHeight des Wrappanels setze, wird auch das Item für die Gruppierung auf die Breite gesetzt. Das darf aber nicht sein, da die Gruppe die ganze Zeile ausfüllen muss.

Wie kann ich innerhalb eines Wrappanels in einer Listbox so etwas umsetzen? Hat so etwas schon mal jemand gemacht?

Würde mich über Hilfe freuen.

mfg

Easy

H
178 Beiträge seit 2011
vor 12 Jahren

Hi,

welche Breite soll nun ausschlaggebend sein? - Jene vom Wrappanel oder die welche sich durch die Reihe der Spezien ergibt?

In die Reihe selbst bekommst du deine Objekt zB durch die Verwendung eines VirtualizingStackPanel im Expander.

Viele Grüße.

E
Easyrider Themenstarter:in
200 Beiträge seit 2006
vor 12 Jahren

Hallo,

die Breite vom Wrappanel ist die wichtige. Der Expander sollte eine komplette "Zeile" des Wrappanels ausfüllen.

H
178 Beiträge seit 2011
vor 12 Jahren

Ein Expander kann die ganze Zeile eines WrapPanels ausfüllen indem du seine Breite an die des WrapPanels bindest:

Expander Width="{Binding ActualWidth, ElementName=wrapPanel, Mode=OneWay}" 

Um immer eine ganze Zeile von einem Objekt zu besetzen kannst du aber auch ein Stackpanel verwenden.

Viele Grüße.