2014-06-06 4 views
1

이 그리드 뷰가 포함 된 페이지의로드 시간을 줄이려고했습니다. MS 설명서 http://msdn.microsoft.com/en-US/library/windows/apps/xaml/hh780657.aspx에 따라 그룹화를 사용하면 가상화를 얻을 수 없습니다. 아무도 이것을하는 방법을 알고 있습니까? 사용하여 Windows 8.1에서그룹화를 사용하여 Windows 8.1 Gridview에서 가상화를 활성화

<CollectionViewSource x:Name="serviceViewSource" Source="{Binding PageData}" IsSourceGrouped="True" ItemsPath="Contents" /> 


<GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemsGridView" 
     AutomationProperties.Name="Items" 
     ScrollViewer.IsHorizontalScrollChainingEnabled="False" 
     TabIndex="1" 
     Padding="120,0,0,50" 
     ItemsSource="{Binding Source={StaticResource serviceViewSource}}" 
     SelectionMode="Multiple" 
     IsSwipeEnabled="True" 
     IsItemClickEnabled="True" 
     IsEnabled="{Binding IsGridViewEnabled}" 
     CanReorderItems="False" CanDragItems="False" Grid.Row="1" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ShowsScrollingPlaceholders="True" 
     common:GridViewItemClickedCommand.Command="{Binding ItemClickedCommand}" ItemTemplateSelector="{StaticResource gridViewTemplateSelector}" 
     > 

      <GridView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch"/> 
       </ItemsPanelTemplate> 
      </GridView.ItemsPanel> 

      <GridView.GroupStyle> 
       <GroupStyle HidesIfEmpty="True"> 
        <GroupStyle.HeaderTemplate> 
         <DataTemplate> 
          <Grid x:Name="headerGrid"> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="90*"/> 
            <ColumnDefinition Width="Auto"/> 
           </Grid.ColumnDefinitions> 
           <Button x:Name="headerButton" Content='{Binding Name}' Background="Transparent" Foreground="AliceBlue" BorderThickness="0" Command="{Binding DataContext.HeaderCommand, ElementName=pageRoot}" 

             IsRightTapEnabled="False" IsHoldingEnabled="False" IsDoubleTapEnabled="False" CommandParameter="{Binding HeaderIdentifier}" FontFamily="Global User Interface" /> 
           <ProgressRing Grid.Column="1" IsActive="{Binding LoadingData}" /> 
          </Grid> 
         </DataTemplate> 
        </GroupStyle.HeaderTemplate> 

        <GroupStyle.ContainerStyle> 
         <Style TargetType="GroupItem"> 

          <Setter Property="BorderBrush" Value="Transparent"/> 
          <Setter Property="BorderThickness" Value="1"/> 

          <Setter Property="HorizontalAlignment" Value="Stretch"/> 
          <Setter Property="VerticalAlignment" Value="Stretch"/> 
         </Style> 
        </GroupStyle.ContainerStyle> 

        <GroupStyle.Panel> 
         <ItemsPanelTemplate> 

          <VariableSizedWrapGrid Margin="0,0,80,0"> 

          </VariableSizedWrapGrid> 

         </ItemsPanelTemplate> 
        </GroupStyle.Panel> 
       </GroupStyle> 
      </GridView.GroupStyle> 
     </GridView> 

답변

2

패널로 ItemsWrapGrid를 사용합니다 디폴트로 GridView 당신이 수행 그룹 가상화. 코드가있는 것처럼 StackPanel을 사용하면 UI가 가상화되지 않습니다.

+0

감사합니다. 알아 냈습니다.이 문서는 저를 날려 버리는 문서였습니다. "UI 가상화는 그룹화 된 데이터에 대해서는 지원되지 않습니다. 데이터 그룹화에 대한 자세한 내용은 목록 또는 표에 항목을 그룹화하는 방법"을 참조하십시오. 그러나 비디오는 http://channel9.msdn.com/Events/Build/2013/3- 158는 나를 위해 그것을 정리했다. 이제 레이아웃주기 오류가 감지되었습니다 : - | –