更改UWP的Window.Current.SizeChanged上的GridViewItem.Width

use*_*471 2 c# xaml winrt-xaml windows-10 uwp

我尝试在UWP上更改窗口大小(Window.Current.SizeChanged)时更改GridViewItem的width属性。

    <GridView x:Name="gv" Grid.Row="1" Background="Gray">
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                <Setter Property="VerticalContentAlignment" Value="Stretch"/>
                <Setter Property="Height" Value="80"/>
                <Setter Property="Width" Value="80"/>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Rectangle x:Name="rect" Fill="Red"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
Run Code Online (Sandbox Code Playgroud)

我计划在Windows 10上调整窗口大小时更改GridViewItem的宽度,以使最后没有空格。

PS图像供参考。

请帮忙。

调整窗口大小时,剩余空白

tao*_*tao 5

我不认为更改GridViewItem的每个宽度都是合适的方法。

您可以注册GridView的SizeChanged事件。在事件处理程序中,您可以进入ItemsWrapGridGridView,然后ItemWidth根据GridView的大小更改ItemsWrapGrid 。

private void appView_SizeChanged(object sender, SizeChangedEventArgs e)
{
    ItemsWrapGrid appItemsPanel = (ItemsWrapGrid)appView.ItemsPanelRoot;

    double optimizedWidth = 140.0;
    double margin = 12.0;
    var number = (int)e.NewSize.Width / (int)optimizedWidth;
    appItemsPanel.ItemWidth = (e.NewSize.Width - margin) / (double)number;
}
Run Code Online (Sandbox Code Playgroud)