Windows 填充GridView的空间
我想用图像填充GridView控件中的可用空间。具体来说,我想做4列,每列有一个图像。列之间没有空格 第一个想法:GridView填充了页面中的所有可用空间,因此我只需要一个转换器,它绑定到GridView的ActualWidth属性,然后将其除以四(列)。这应该给我四列相同的宽度。问题是,不幸的是,宽度不是一个简单的数字,除以4可能会得到一个不完美的数字,因此4列宽度之和可以遍历网格,结果是我只能看到3列,而不是4列。即使我将边距和填充设置为零,结果也不会改变。代码如下:Windows 填充GridView的空间,windows,xaml,windows-runtime,winrt-xaml,windows-phone-8.1,Windows,Xaml,Windows Runtime,Winrt Xaml,Windows Phone 8.1,我想用图像填充GridView控件中的可用空间。具体来说,我想做4列,每列有一个图像。列之间没有空格 第一个想法:GridView填充了页面中的所有可用空间,因此我只需要一个转换器,它绑定到GridView的ActualWidth属性,然后将其除以四(列)。这应该给我四列相同的宽度。问题是,不幸的是,宽度不是一个简单的数字,除以4可能会得到一个不完美的数字,因此4列宽度之和可以遍历网格,结果是我只能看到3列,而不是4列。即使我将边距和填充设置为零,结果也不会改变。代码如下: <GridVi
<GridView x:Name="Photos">
<GridView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Url}"
Width="{Binding ElementName=Photos, Path=ActualWidth, Converter={StaticResource DivideByFourConverter}}"
Height="{Binding ElementName=Photos, Path=ActualWidth, Converter={StaticResource DivideByFourConverter}}
Stretch="UniformToFill" />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
您不应该绑定到ActualWidth
属性。提到:
出于ElementName绑定的目的,ActualWidth在更改时不会发布更新(由于其异步和运行时计算的性质)。不要尝试将ActualWidth用作ElementName绑定的绑定源。如果您有需要基于实际宽度进行更新的场景,请使用SizeChanged处理程序
我设法让它像这样工作:
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
然后在后面的代码中:
private void GridView\u SizeChanged(对象发送方,sizechangedventargs e)
{
变量面板=(ItemsWrapGrid)GridView.ItemsPanelRoot;
panel.ItemWidth=panel.ItemHeight=e.NewSize.Width/4;
}
它也适用于6英寸的emulator。您不应该绑定到ActualWidth
属性。请注意:
出于ElementName绑定的目的,ActualWidth在更改时不会发布更新(由于其异步和运行时计算的性质)。不要尝试将ActualWidth用作ElementName绑定的绑定源。如果您有需要基于ActualWidth进行更新的场景,请使用SizeChanged处理程序
我设法让它像这样工作:
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
试验
然后在后面的代码中:
private void GridView\u SizeChanged(对象发送方,sizechangedventargs e)
{
变量面板=(ItemsWrapGrid)GridView.ItemsPanelRoot;
panel.ItemWidth=panel.ItemHeight=e.NewSize.Width/4;
}
它也适用于6英寸模拟器。您是否尝试过将GridView的边距稍微增加几个像素?类似于Margin=“0,0,-4,0”
。我不知道它是否管用,试试看。这可以管用,但大小不一。例如:WVGA屏幕不是720p屏幕,我们可以在其中设置更多的边距。您是否尝试过将GridView的边距稍微增加几个像素?类似于Margin=“0,0,-4,0”
。我不知道它是否管用,试试看。这可以管用,但大小不一。例如:WVGA屏幕不是720p屏幕,在这里我们可以设置更多的marginOh、文档。。。对,我把那块完全弄丢了!非常感谢,很有效!!:)哦,文档。。。对,我把那块完全弄丢了!非常感谢,很有效!!:)
<GridView x:Name="Photos">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid MaximumRowsOrColumns="4"
Orientation="Horizontal" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Url}"
Stretch="UniformToFill" />
</DataTemplate>
</GridView.ItemTemplate>
</GridView>