VirtualizingStackPanel

     <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();
        }

 

转载于:https://www.cnblogs.com/qixue/p/4226187.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值