Ich habe eine variable Anzahl von Elementen, die vom Ansichtsmodell gebunden sind und horizontal angezeigt werden müssen. Jedes Element wird durch einen Text dargestellt, diese Texte variieren in der Länge. Wenn ich eine Listenansicht mit einem StackPanel mit horizontaler Ausrichtung als ItemTemplate verwende, sind die Elemente nur so breit wie der darin enthaltene Text. Gibt es eine Möglichkeit, sie alle gleich groß zu machen, also die Größe der breitesten? Idealerweise ohne einen komplexen Codebehind, mit Item Templates und so? Hinweis: Ich kann nicht etwas willkürlich minimale Breite eingestellt, weil ich nicht weiß, welche Länge der Texte schließlich (verschiedene Sprachen, etc.) habenWPF: Horizontal ausgerichtete Sammlung mit Elementen mit einheitlicher Breite
Antwort
Sie können ListBox
verwenden, die mit UniformGrid
als Itemspanel Auswahl Unterstützung. Uniform wird für jedes Element gleich Speicherplatz zuteilen
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Beispiel
Während das funktioniert, habe ich Probleme, einen Rahmen zwischen den Elementen hinzuzufügen und die Standardhintergrundfarbe eines ausgewählten Elements zu ändern. Kannst du mir helfen? ? – Shaggydog
@Shaggydog, überprüfe [diese F + A] (https://stackoverflow.com/questions/7059526/set-background-color-for-selected-items-in-a-listbox) für die Farbeinstellung Beispiel. Ich würde anfangen, indem ich den Seitenrand zu Label ('Label BorderThickness =" 1,0 "BorderBrush =" Red "') oder Border Element um Label hinzufüge. Wenn das nicht gut aussieht, würde ich es mit einem benutzerdefinierten ListBoxItem Template versuchen ohne IDE im Moment, wenn Sie weitere Hilfe zu Ihrem Problem benötigen, schlage ich vor, eine neue Frage zu stellen. – ASh
- 1. WrapPanel mit 2 Elementen WPF
- 2. Wahrscheinlichkeit mit einheitlicher Verteilung
- 3. horizontal Ausgerichtete dynamisch erstellte Widgets qt C++
- 4. WPF: Sammlung mit Sammlung zu einer ListBox mit Gruppen binden
- 5. WPF-Strukturansicht mit Spalten mit fester Breite
- 6. Kreisförmiges Gitter mit einheitlicher Dichte
- 7. Horizontal zentriert mit Rand und maximale Breite
- 8. horizontal ausgerichtete Buttons Eine feste Position innerhalb eines Div Geben
- 9. Rechts ausgerichtete UICollectionView bei Verwendung des horizontalen Scrollens mit zwei Elementen (für RTL)
- 10. horizontal scrollbare Liste voll zentriert mit dynamischen Breite Elemente
- 11. Spring Cache mit Sammlung von Elementen
- 12. Vba erstellen Sammlung mit HTML-Elementen
- 13. WPF horizontal DataGrid
- 14. HTML: Zentrieren unsortierten Liste mit unbekannter Anzahl von Elementen horizontal
- 15. Sehr schneller Zufallszahlengenerator mit einheitlicher Verteilung
- 16. Vertikal ausgerichtete Sammlungsansichtszellen mit unterschiedlichen Höhen
- 17. WPF Textrimming in horizontal gestapelten ItemsControl mit TextBlocks
- 18. Positionierung von div Elementen horizontal, nicht vertikal
- 19. WPF Databinding mit einer Sammlung Objekt
- 20. WPF Splash Screen mit dynamischen Elementen. Wie?
- 21. Wpf Knopf breite Fenstergröße Basierend
- 22. WPF ComboBox mit benutzerdefinierter Dropdown Breite
- 23. Gridview mit quadratischen Elementen in Android mit adaptiver Breite/Höhe
- 24. Einen Container horizontal und vertikal zentrieren (mit reaktionsfähigen Elementen)
- 25. Ausrichten von Elementen in div, horizontal und vertikal mit Flex
- 26. Endloses Scrollen horizontal scroll mit begrenzten sichtbaren Elementen
- 27. Wie mache ich mehrere divs horizontal mit gleicher Breite anordnen?
- 28. Anpassen der Breite von TextView-Elementen an die Breite von Elementen mit unterschiedlichen Parents mithilfe von LinearLayout
- 29. Producer-Consumer-Modell mit einheitlicher Lastverteilung mit N1: N2: ....: NM
- 30. Nachkomma in einheitlicher Initialisierung
Können Sie so etwas wie 'Width = "1 *"' tun für jedes Element? –
Nicht sicher, was Sie damit meinen. Breite auf einem TexBlock unterstützt keine Dinge wie "1 *". Wenn Sie ein Raster mit einer Spaltendefinition haben wollten, habe ich das einfach versucht. Tut nichts. Aber selbst wenn ich das irgendwie zur Arbeit bringen würde, denke ich das würde meine Artikel auf die maximale Breite strecken, was nicht das ist, was ich will. " – Shaggydog