Wenn Sie die Einzelteile wünschen, strecken den horizontalen Raum zu füllen und der Lage sein, festzulegen, wie viele Elemente pro Zeile, die Sie wollen, dann werden Sie die ItemWidth der ItemsWrapGrid manuell innerhalb des Sizechanged-Ereignis des Gridview setzen müssen.
Hier ist ein Beispiel:
<GridView x:Name="gridView" SizeChanged="onGridViewSizeChanged">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Background="GreenYellow" BorderBrush="Black" BorderThickness="2">
<TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="40"/>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Margin" Value="0"/>
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<x:String>1</x:String>
<x:String>2</x:String>
<x:String>3</x:String>
<x:String>4</x:String>
<x:String>5</x:String>
<x:String>6</x:String>
<x:String>7</x:String>
<x:String>8</x:String>
</GridView>
private void onGridViewSizeChanged(object sender, SizeChangedEventArgs e)
{
// Here I'm calculating the number of columns I want based on
// the width of the page
var columns = Math.Ceiling(ActualWidth/300);
((ItemsWrapGrid)gridView.ItemsPanelRoot).ItemWidth = e.NewSize.Width/columns;
}
Sie könnten wahrscheinlich diese in ein Verhalten bündeln oder angefügten Eigenschaft zu.
Kennen Sie adaptive Trigger für die visuellen Zustände? Was genau hast du bisher versucht und was funktioniert nicht für dich? –
Ja, ich habe adaptive Trigger für die visuellen Zustände verwendet, die minWindowWidth auf 800 setzen. Ich habe die Setter-Eigenschaft in derselben verwendet, um das Element MinWidth auf 300 zu setzen, das funktioniert. Aber was ich tun möchte, ist dynamisch die Breite des Artikels ändern sich entsprechend der Fenstergröße unserer App ab der Fensterbreite 800 und höher. Das grundlegende Problem, mit dem ich konfrontiert bin, ist, dass, da ich die Breite in der Setter-Eigenschaft definiere, diese nicht mehr dynamisch ist. Wie behebe ich dieses Problem? –