为winrt-xaml定制虚拟化换行面板

本文关键字:换行 虚拟化 winrt-xaml | 更新日期: 2023-09-27 18:14:18

我试图在我的应用程序中创建搜索功能,但当搜索结果产生超过1000行,一个错误显示说:

Exception   {"Not enough quota is available to process this command. (Exception from HRESULT: 0x80070718)"} System.Exception

我知道这是由于系统试图在UI中进行大量更改,并且它的方式太多,所以系统终止了它,因为它需要很长时间才能完成该请求…

,我很清楚这一点,因为我使用一个自定义的wrapPanel控件来测量每个项目的高度,并在UI中创建块,当我使用虚拟化控件如wrapgrid或virtualizingstackpanel时,没有错误显示…

所以,我想要完成的是,是否有可能创建一个自定义控件,如包装面板,但虚拟化数据,使错误不会再出现。如果可以,我们该怎么做?增量数据加载还是什么?

对不起,我是新的winrt-xaml,我正试图找出它是什么:)

更新:

这是链接,我得到WrapPanel.cs我的XAML代码是这样的:

    <GridView x:Name="gvResult">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <local:WrapPanel
                    Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Grid Margin="5">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="auto"/>
                        <RowDefinition Height="auto"/>
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="300" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Width="300" TextWrapping="Wrap">
                        <Underline>
                            <Run FontWeight="Medium" Text="{Binding abbKitab}"/><Run Text=" "/><Run FontWeight="Medium" Text="{Binding numBab}"/>
                            <Run FontWeight="Medium" Text=":"/> <Run FontWeight="Medium" Text="{Binding numAyat}"/>
                        </Underline>
                        <LineBreak/>
                        <Run Text="{Binding isi}"/>
                    </TextBlock>
                </Grid>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

为winrt-xaml定制虚拟化换行面板

如果您从OrientedVirtualizingPanel派生出WrapPanel,这可能会起作用,但我不认为这是可能的。您可以使用自定义虚拟化实现创建自己的列表控件,但这似乎更加困难。也许放弃你的自定义面板,只是使用WrapGrid或在虚拟面板中分组你的结果,例如,有特定大小的页面,代表一组结果,每个结果在WrapPanel中有特定数量的项目?然后,您可以将虚拟化卸载到外部面板,并使用您自定义的组对每个组进行样式设置。