码迷,mamicode.com
首页 > 其他好文 > 详细

VirtualizingStackPanel

时间:2015-01-15 15:45:28      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

     <FlipView x:Name="flipView1" 
                  ItemsSource="{Binding}"
                  ScrollViewer.HorizontalScrollMode="Auto"
                  VirtualizingStackPanel.VirtualizationMode="Standard" SelectionChanged="flipView1_SelectionChanged">
            <FlipView.ItemTemplate>
                <DataTemplate>
                    <ScrollViewer 
                        ZoomMode="Enabled" 
                        HorizontalScrollBarVisibility="Auto"
                        MinZoomFactor="1" MaxZoomFactor="4"
                        ViewChanged="ScrollViewer_ViewChanged">
                        <Border Width="{Binding Width}"
                                Height="{Binding Height}"
                                Background="White"
                                HorizontalAlignment="Center">
                           <Image 
                            Source="{Binding Source}"
                            Height="{Binding Height}"
                            Width="{Binding Width}"
                               Margin="5"/> 
                        </Border>                        
                    </ScrollViewer>
                </DataTemplate>
            </FlipView.ItemTemplate>
            <FlipView.ItemsPanel>
                <ItemsPanelTemplate>
                    <!--
                            VirtualizingStackPanel - 虚拟化的 StackPanel(即仅生成需要显示的 UI 元素。当绑定了大量数据,而某时仅显示其中一小部分的时候,使用此控件则可大幅提高呈现效率)
                                Orientation - 数据的排列方式(垂直排列或水平排列,也就是说 ListBox 也可以水平排列)
                                VirtualizationMode - 虚拟化的模式
                                    Recycling - item 的容器会被重用,默认值
                                    Standard - 每个 item 都有自己独立的容器 
                            注:ListBox 默认已经使用了 VirtualizingStackPanel,但是其对于变高的 DataTemplate 来说支持得不好
                        -->
                    <VirtualizingStackPanel
                        Orientation="Horizontal"
                        AreScrollSnapPointsRegular="True"
                        CleanUpVirtualizedItemEvent="VirtualizingStackPanel_CleanUpVirtualizedItemEvent">                        
                    </VirtualizingStackPanel>
                </ItemsPanelTemplate>
            </FlipView.ItemsPanel>
        </FlipView>
        private async void LoadFile(StorageFile file)
        {
            progressRing1.IsActive = true;
            progressRing1.Visibility = Visibility.Visible;
            PdfDocument doc = await PdfDocument.LoadFromFileAsync(file);
            pages = new ObservableCollection<PdfRenderingManager>();
            for (uint count = 0; count < doc.PageCount; count++)
            {
                PdfRenderingManager pageRender = new PdfRenderingManager(doc, count);
                pages.Add(pageRender);
            }

            totalPages = doc.PageCount;
            flipView1.DataContext = pages;

            progressRing1.Visibility = Visibility.Collapsed;
            progressRing1.IsActive = false;
        }

        private ObservableCollection<PdfRenderingManager> pages;

        private void VirtualizingStackPanel_CleanUpVirtualizedItemEvent(object sender, CleanUpVirtualizedItemEventArgs e)
        {
            ((PdfRenderingManager)(e.Value)).Dispose();
        }

 

VirtualizingStackPanel

标签:

原文地址:http://www.cnblogs.com/qixue/p/4226187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!