Mon*_*ott 0 xaml gridview visualstatemanager windows-10 uwp
我创建了一个GridView通过数据绑定获取数据。我接下来要做的是根据屏幕大小使GridView项目的宽度动态变化(就像他们在Windows 10新闻,体育应用程序等中所做的那样)。到目前为止,我已经成功使用最小窗口宽度0做到了视觉状态管理器,方法是将水平对齐方式设置为拉伸,但是对于其他更大的窗口尺寸,我将无法继续进行。
任何用于解决此问题的帮助将不胜感激。
如果要使项目拉伸以填充水平空间并能够指定所需的每行多少个项目,则必须在GridView的SizeChanged事件中手动设置ItemsWrapGrid的ItemWidth。
这是一个例子:
<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>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
您可能也可以将其捆绑到Behavior或附加的属性中。
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |