【问题标题】:Is it possible to use VirtualizingStackPanel in a FlipView?是否可以在 FlipView 中使用 VirtualizingStackPanel?
【发布时间】:2013-11-12 04:33:42
【问题描述】:

目前我的 FlipView 允许用户从本地 Pictures 文件夹中选择多张图片,然后在 FlipView 中显示选择的图像。但是,它仅在用户选择少量图片时才有效。选择太多大图像时,应用程序崩溃。我读到 VirtualizingStackPanel 将 3 个图像存储在内存中(之前、当前、之后),因此并非所有图像都一次加载。

这是我的 FlipView(11 月 14 日编辑)。

<FlipView x:Name="flpView" Grid.Row="1" Margin="10, 10, 10, 10">
        <FlipView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </FlipView.ItemsPanel>

        <FlipView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Image Source="{Binding}" Stretch="Uniform"/>
                </Grid>
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>

【问题讨论】:

    标签: c# xaml memory virtualizingstackpanel flipview


    【解决方案1】:

    是的,如果您使用 VirtualizingStackPanel,它将重用 Ítems,并且如果您不会遇到大型数据集合的问题。试试这个:

      <FlipView HorizontalAlignment="Left" Height="464" Margin="718,288,0,0" VerticalAlignment="Top"  ItemsSource="{Binding YourSource}" ItemTemplate="{StaticResource ImageTemplate}">
            <FlipView.ItemsPanel>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel/>
                </ItemsPanelTemplate>
            </FlipView.ItemsPanel>
        </FlipView>
    

    【讨论】:

    • 嗯.. 如果我只有 Source="{Binding}" 而没有 ItemsSource="{Binding MySource}" 会发生什么?
    • Image 没有 ItemsSource 属性,DataTemplate 仍然如您在帖子中指出的那样,但 FlipView XAML 看起来像我发布的内容。
    • 您好。我如上所示更新了我的代码,但它仍然不起作用:c
    猜你喜欢
    • 2015-05-08
    • 1970-01-01
    • 2011-06-14
    • 2017-12-18
    • 2013-06-02
    • 2015-09-03
    • 2014-03-17
    • 2011-10-16
    • 2019-07-04
    相关资源
    最近更新 更多