【发布时间】:2013-05-20 21:32:58
【问题描述】:
我正在尝试在我的应用程序中创建搜索功能,但是当搜索结果产生超过 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>
【问题讨论】:
标签: c# windows-8 windows-runtime winrt-xaml virtualization