• 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();
            }
  • 相关阅读:
    pstree
    gvisor vfs2
    gvisor entersyscall exitsyscall
    gvisor在arm64下syscall.SIGILL信号处理
    SpringBlade 为id添加自增长属性
    SQL Server Update 一个列的数据为随机数
    SpringBlade Saber 关闭验证码
    SpringBlade Saber 用户列表的新增按钮 是怎么个显示原理
    SpringBlade Saber 切换标签页 不刷新
    SpringBlade 00 常见问题汇总
  • 原文地址:https://www.cnblogs.com/qixue/p/4226187.html
Copyright © 2020-2023  润新知