Gridview 网格视图中的性能非常低

Gridview 网格视图中的性能非常低,gridview,windows-phone-8.1,windows-phone,Gridview,Windows Phone 8.1,Windows Phone,我最近构建了一个页面,该页面根据表头和表左侧的元素进行一些计算,并将结果放在网格视图中 <Grid.ColumnDefinitions> <ColumnDefinition Width="75"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1

我最近构建了一个页面,该页面根据表头和表左侧的元素进行一些计算,并将结果放在网格视图中

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>
一切正常,但性能太差了。更重要的是,它在手机上无法使用(我目前正在使用Lumia 1020)。 从问题开始,它有一个可怕的内存泄漏(可能它需要100MB的RAM,而所有这些在返回应用程序或应用程序中的其他地方后都无法释放)

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>
然后,如果我在同一个线程中加载所有元素,加载时间非常长6-7秒,如果我在后台加载它们,用户可以很容易地看到元素正在网格视图中加载,在这段时间内它是不可用的

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>
加载完成后,滚动非常缓慢。有时甚至它也不响应用户。顶部、左侧和中间元素的滚动是同步的,但是当移动中间网格视图时,其他元素需要半秒钟才能达到相同的偏移量。当它以另一种方式发生时,需要一秒钟或更长时间才能在滚动中获得相同的偏移量,并且会发生跳跃(不平稳)

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>
我需要加载和计算20x50个元素

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>
代码如下:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>

如果您想加载如此多的项目,则应使用增量加载,即当用户靠近要显示的项目时加载项目。检查此项。

在我开始编码之前,感谢您的回答和有关增量加载的一些问题:1-。如果用户快速滚动gridview,则项目加载是否足够快?2-. 如果每个元素的值或原点中包含更改的内容递增AlloadInglist,则当gridview处于特定位置时,这些项目是否按第一顺序刷新?1。如果数据是从API加载的,那么这取决于internet连接速度;如果列表是从本地保存的数据加载的,那么速度相当快。2.对于这种类型的增量加载,您需要使用ObservableCollection或默认情况下实现INotifyPropertyChanged接口本身的任何其他集合,以便在原始集合中所做的每个更改都会自动反映在所使用的GridView中。您好,Rohit。一如既往地感谢您的回复。1-. 数据直接加载到应用程序中;在应用程序的开头列出一个列表,然后在gridview中使用。2-. 我正在使用一个可观察的集合<代码>代码公共静态ObservableCollection myList<代码>代码
<Grid.ColumnDefinitions>
    <ColumnDefinition Width="75"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<Grid x:Name="tbMain" Width="75" Height="75" Margin="1.5,1.5,-1.5,1.5" DoubleTapped="tbHMain_DoubleTapped">
    <TextBlock Grid.Row="0" Grid.Column="0" x:Name="tbMainHeaderTable" Text="some text"
               Margin="1" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="WrapWholeWords"
               Style="{StaticResource BodyTextBlockStyle}"/>
</Grid>

<ScrollViewer Grid.Row="0" Grid.Column="1" x:Name="Top" ViewChanged="Top_ViewChanged" Margin="0,1.5,1.5,0"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
    <ListView x:Name="gridTop" Grid.Row="0" Grid.Column="1" Margin="1.5,1.5,1.5,0" ItemsSource="{Binding}"
              DataContext="{Binding listFocal}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>

        <ListView.ItemTemplate>

            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" Width="75" Height="75"
                              Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbTop" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="0" x:Name="Left" ViewChanged="Left_ViewChanged" Margin="0,1.5,0,1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <ListView x:Name="gridLeft" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <GridViewItem Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Center" Width="75"
                              Height="75" Background="{StaticResource DarkGreyThemeColor}">
                    <TextBlock x:Name="tbLeft" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center" Style="{StaticResource GoldenThemeStyle}"/>
                </GridViewItem>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

</ScrollViewer>

<ScrollViewer Grid.Row="1" Grid.Column="1" x:Name="Middle" ViewChanged="Middle_ViewChanged" Margin="1.5"
              HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">

    <GridView x:Name="gridMiddle" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" IsTapEnabled="False"
              IsHoldingEnabled="False">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid MaximumRowsOrColumns="28" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemContainerStyle>
            <Style TargetType="GridViewItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ContentPresenter x:Name="contentPresenter"
                                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                              Margin="{TemplateBinding Padding}"/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GridView.ItemContainerStyle>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="75" Height="75"
                      Background="{StaticResource MediumDarkGreyThemeColor}">
                    <TextBlock x:Name="tbResult" Text="{Binding}" HorizontalAlignment="Center"
                               VerticalAlignment="Center"/>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>