GridView mit 2 Spalten füllen Breite
Den Ergebnissen, die ich erreichen möchte, ist es ziemlich einfach, eine Liste mit 2 Spalten, die beide die gleiche Breite. In Windows Phone 7/8 dies kann leicht erreicht werden durch ein ListBox
mit einem WrapPanel
als ItemsPanel
und Einstellung der ItemWidth
240 (als der Bildschirm breit war 480).
Jetzt Schreibe ich eine Universal-App, aber hier ist das problem, dass der Bildschirm ist nicht eine Garantie auf eine Breite von 480 (auch nicht für das Telefon, es scheint), so kann ich nicht die ItemWidth
wie ich will, es füllt die gesamte Breite des Bildschirms. Ich habe in der Lage zu erreichen, fast den gewünschten Effekt mit der folgenden XAML
:
<GridView ItemsSource="{Binding Results}" Margin="12">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<Image Source="{Binding SampleImage}" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal" HorizontalChildrenAlignment="Stretch" VerticalChildrenAlignment="Stretch">
</WrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
Gibt das folgende Ergebnis:
Gesehen ist es erfolgreich gibt 2 Spalten die gleiche Breite, ABER die Grid
im GridView.ItemTemlate
füllt nicht die ganze Breite der einzelnen Spalte. Ich habe versucht Einstellung HorizontalAlignment="Stretch"
auf, dass sowohl Grid
und auf die GridView
selbst ohne Erfolg. Wer hat eine Idee dieses zu tun?
InformationsquelleAutor Johan Falk | 2014-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie versuchen, diese:
Die andere Sache, die Sie könnten versuchen, ist manuell eingestellt
ItemWidth
/ItemHeight
wenn man dieSizeChanged
Veranstaltung auf derGridView
.Wenn aus irgendeinem Grund der oben nicht funktioniert - Sie könnte auch tun, was ich Tue, unten und aktualisieren Sie die
Value
sowohlDoubleViewModel
Ressourcen aufSizeChanged
Veranstaltungen:Wo
DoubleViewModel
ist:Hallo, können Sie erklären, ein wenig mehr bitte ich bekomme es nicht
Welchen Teil würden Sie wollen, mich zu erweitern?
Versucht ähnliche Technik für das ListView-Steuerelement basierend auf ListViewItem, die Einstellung, die HorizontalAlignment-Eigenschaft auf Dehnen und das hat nicht funktioniert. Dies funktionierte in Silverlight!
Versuchen Sie, Eigenschaften "horizontalcontentalignment" zu?
InformationsquelleAutor Filip Skakun
Meine Lösung ist :
Code Hinter :
InformationsquelleAutor Ganesh Cauda
Die Lösung, die ich verwendet wurde, mit Sitz in Filip Skakuns Vorschlag, aber eine leicht unterschiedliche Umsetzung durch eine wiederverwendbare User-Control mit diesem Verhalten. Der Benutzer hat die Kontrolle (unter anderem)
Columns
undItemsSource
Eigenschaften. Ich ändere dieItemWidth
desItemsWrapGrid
statt der Breite derItemTemplate
- und dies direkt in derSizeChanged
event-handler.Ich auch brauchte, um ein
ItemsWrapGrid
statt einerWrapGrid
für diese zu arbeiten. Der XAML-Code für die final-Benutzer-Steuerung:Und für die code-behind:
InformationsquelleAutor Johan Falk
Konnte ich lösen, etwas sehr ähnlich, nur die Bindung des Elements-Breite des übergeordneten ActualWidth, wie diese:
Das ist nicht wahr. Dies ist ein Stück code arbeiten, in denen wir Elemente entsteht durch die Bindung von "ItemsSource" (genau hinsehen, ist das ListView-Steuerelement gebunden an den Geräten beobachten Sammlung). Vielleicht, wenn Sie binden Sie es an eine observable-collection und dann Elemente hinzufügen, um diese Sammlung, anstatt zu definieren, die ItemsSource-Bindung direkt per code?
Aus irgendeinem Grund bekam ich das gleiche Ergebnis, die Breite&height Bindungen nicht funktionieren. Und ich bin mit einer ObservableCollection für itemsource.
InformationsquelleAutor Vinicius
Alternativ könnte man das Loaded-Ereignis aus Ihrer
WrapGrid
zumindestens dieItemWidth
XAML
Codebehind
Beispiel
InformationsquelleAutor WiiMaxx