2013-05-29 45 views
0

我正在使用Windows 8應用程序(C#/ XAML)。 其中一個要求是在DataGrid中加載一個單詞集合,我們在這裏使用語義縮放選項。使用大集合 - Windows 8 DataGrid

當收集具有小於約1500的項目的應用程序掛起更多,並給出該錯誤:

+異常{「沒有足夠的配額是可用來處理該命令(從HRESULT異常:0x80070718)。」}系統.Exception

所用的一些代碼:

_collection = _readDictionary.GetModeDetailsForModeDetails(modeId); 

var query = from item in _collection 
      orderby (item.WordName.ToLower()) 
      group item by item.WordName[0].ToString().ToUpper() into g 
      select new { GroupName = g.Key.ToString().ToUpper(), Items = g }; 

foreach (var g in query) 
{ 
    GroupInfoList<Words> info = new GroupInfoList<Words>(); 
    info.Key = g.GroupName; 

    foreach (var item in g.Items) 
    { 
    info.Add(item); 
    } 

    groups.Add(info); 
} 

bindGroupData.Source = groups; 
(semanticZoom.ZoomedOutView as ListViewBase).ItemsSource = bindGroupData.View.CollectionGroups; 

,這是XAML代碼:

<SemanticZoom x:Name="semanticZoom" VerticalAlignment="Bottom" > 
     <SemanticZoom.ZoomedOutView> 
      <GridView ScrollViewer.IsHorizontalScrollChainingEnabled="False" VerticalAlignment="Top" HorizontalAlignment="Left"> 
       <GridView.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Group.Key}" FontFamily="Segoe UI Light" Foreground="Red" FontSize="24"/> 
        </DataTemplate> 
       </GridView.ItemTemplate> 
       <GridView.ItemsPanel> 
        <ItemsPanelTemplate> 
         <WrapGrid ItemWidth="75" ItemHeight="75" MaximumRowsOrColumns="5" VerticalChildrenAlignment="Center" /> 
        </ItemsPanelTemplate> 
       </GridView.ItemsPanel> 
       <GridView.ItemContainerStyle> 
        <Style TargetType="GridViewItem"> 
         <Setter Property="Margin" Value="4" /> 
         <Setter Property="Padding" Value="10" /> 
         <Setter Property="BorderBrush" Value="Gray" /> 
         <Setter Property="BorderThickness" Value="2" /> 
         <Setter Property="HorizontalContentAlignment" Value="Center" /> 
         <Setter Property="VerticalContentAlignment" Value="Center" /> 
        </Style> 
       </GridView.ItemContainerStyle> 
      </GridView> 
      </SemanticZoom.ZoomedOutView> 
     <SemanticZoom.ZoomedInView> 
      <GridView x:Name="GrdViewWord" SelectionMode="Multiple" ItemsSource="{Binding Source={StaticResource bindGroupData}}" ItemClick="GrdViewWord_ItemClick" SelectionChanged="GrdViewWord_SelectionChanged" Background="#FFE2E2E2" Height="396" VerticalAlignment="Top" > 
       <!-- ItemContainerStyle="{StaticResource GridViewItemStyle}" --> 
       <GridView.ItemsPanel> 
        <ItemsPanelTemplate> 
         <!--<WrapGrid Orientation="Vertical" Background="{Binding BG}"/>--> 
         <StackPanel Orientation="Horizontal" /> 
        </ItemsPanelTemplate> 
       </GridView.ItemsPanel> 

       <GridView.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal" Height="20" Width="75" > 
          <TextBlock Text="{Binding WordName}" Tag="{Binding WordID}" FontFamily="Segoe UI" FontSize="12" Margin="5,5,0,0" Foreground="Black" HorizontalAlignment="Left" Height="20" Padding="0"/> 
         </StackPanel> 
        </DataTemplate> 
       </GridView.ItemTemplate> 

       <GridView.GroupStyle> 
        <GroupStyle> 
         <GroupStyle.HeaderTemplate> 
          <DataTemplate> 
           <Grid Margin="10"> 
            <!--Background="{StaticResource ApplicationPageBackgroundThemeBrush}"--> 
            <TextBlock Text='{Binding Key}' FontSize="25" Foreground="Red" Margin="5" /> 
           </Grid> 
          </DataTemplate> 
         </GroupStyle.HeaderTemplate> 

         <GroupStyle.Panel> 
          <ItemsPanelTemplate> 
           <VariableSizedWrapGrid Orientation="Vertical" Height="300" /> 
          </ItemsPanelTemplate> 
         </GroupStyle.Panel> 
        </GroupStyle> 
       </GridView.GroupStyle> 
      </GridView> 
     </SemanticZoom.ZoomedInView> 
    </SemanticZoom> 

任何人都可以請幫我解決這個問題嗎?

回答

0

你必須使用虛擬化。 GridView可以很容易地虛擬化(UI virt或Data virt。)。請參閱Microsoft Documentation以瞭解您需要什麼類型的虛擬化。

+0

,現在性能已經提高。 – Biju

0

這似乎是語義縮放的一個大問題,超過1200個項目的任何東西都不起作用。

在上面的'使用列表或網格虛擬化'的鏈接中,它表示'分組數據 - 分組數據不支持UI虛擬化。'

語義縮放使用分組數據,因此它不起作用。

即使是微軟自己的語義示例也會發生與莫爾條紋相比1200事件的崩潰。 Thanks..But它不是默認的控制

http://social.msdn.microsoft.com/Forums/windowsapps/en-US/680136e1-67de-4111-824a-fa9f530ffc10/binding-largesets-of-data-to-gridview-is-causing-a-problem