Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[Silverlight] Listbox, Wrappanel mit Gruppierung
Easyrider
myCSharp.de - Member



Dabei seit:
Beiträge: 200
Herkunft: Bayern

Themenstarter:

[Silverlight] Listbox, Wrappanel mit Gruppierung

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Hans_Rakete
myCSharp.de - Member



Dabei seit:
Beiträge: 178

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Easyrider
myCSharp.de - Member



Dabei seit:
Beiträge: 200
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Hallo,

die Breite vom Wrappanel ist die wichtige. Der Expander sollte eine komplette "Zeile" des Wrappanels ausfüllen.
private Nachricht | Beiträge des Benutzers
Hans_Rakete
myCSharp.de - Member



Dabei seit:
Beiträge: 178

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers