Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP FlipView来自URI的图像(Web)_C#_.net_Win Universal App_Windows 10 Universal_Flipview - Fatal编程技术网

C# UWP FlipView来自URI的图像(Web)

C# UWP FlipView来自URI的图像(Web),c#,.net,win-universal-app,windows-10-universal,flipview,C#,.net,Win Universal App,Windows 10 Universal,Flipview,实际上,我有一个带有图像URI的列表。在foreach循环中,我从这些URI创建图像对象,如下所示: foreach (Uri imageUri in uriList) { BitmapImage bmi = new BitmapImage(new Uri(imageUri)); Image image = new Image(); image.source = bmi; flipView.Items.Add(image); } 现在的问题是,如果有很多图像(

实际上,我有一个带有图像URI的列表。在foreach循环中,我从这些URI创建图像对象,如下所示:

foreach (Uri imageUri in uriList)
{
    BitmapImage bmi = new BitmapImage(new Uri(imageUri));
    Image image = new Image();
    image.source = bmi;

    flipView.Items.Add(image);
}
现在的问题是,如果有很多图像(100-200),那么在快速浏览FlipView时,RAM的使用率非常高。我还看到,每个图像都将被“缓存”或其他东西,因此如果我返回FlipView,将不会产生更多的互联网流量

所以我的问题是,这是正确的方法吗,或者有更好的方法从网络图像中获取“图像库”吗


问候您

翻转视图不用于显示大量项目。您应该改用水平列表视图


首先,需要修改ListView的样式,将HorizontalSnapPointsType属性更改为MandatorySingle(这样图像可以像翻转视图一样捕捉到正确的位置)。单元格的宽度应等于flipview的旧宽度,以确保翻转视图不用于显示大量项目。您应该改用水平列表视图


首先,需要修改ListView的样式,将HorizontalSnapPointsType属性更改为MandatorySingle(这样图像可以像翻转视图一样捕捉到正确的位置)。单元格的宽度应等于flipview的旧宽度,以确保

From,
flipview
最适合不超过25个项目(图像)的集合

您最好将“数据虚拟化”添加到FlipView中,例如:

<FlipView>
    <FlipView.ItemsPanel>
      <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Horizontal"/>
      </ItemsPanelTemplate>
    </FlipView.ItemsPanel>
</FlipView>

关于要“缓存”的图像,这是正常的,默认情况下,位图图像会缓存图像。

从,
FlipView
最适合不超过25个项目(图像)的集合

您最好将“数据虚拟化”添加到FlipView中,例如:

<FlipView>
    <FlipView.ItemsPanel>
      <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Horizontal"/>
      </ItemsPanelTemplate>
    </FlipView.ItemsPanel>
</FlipView>



关于图像被“缓存”,这很正常,默认情况下,位图图像会缓存图像。

“flip view不支持虚拟化”你怎么能这么肯定?!我认为他是正确的,我已经测试过了,内存使用率仍然很高。但是如何使用与FlipView具有相同行为的ListView?首先,您需要修改ListView的样式,将HorizontalSnapPointsType属性更改为MandatorySingle(以便图像可以像flip视图一样捕捉到正确的位置)。单元格的宽度应等于flipview的旧宽度,以确保:。很抱歉,遗漏了信息,FlipView的默认ItemsPanelTemplate是VirtualzingStackPanel,它确实支持虚拟化。好的,这正在工作,谢谢。但我不知道如何使项目的宽度延伸到屏幕的宽度。我已经测试了ListView和ListViewItem样式中的多个参数,但是这些项目要么宽度小于,因此我已经看到了下一个项目,要么宽度更大。如何实现这一点?必须将项目的宽度绑定到静态值(例如:屏幕宽度)。很高兴它为你工作,你能考虑接受它作为答案吗?“翻转视图不支持虚拟化”你怎么能如此确定?!我认为他是正确的,我已经测试过了,内存使用率仍然很高。但是如何使用与FlipView具有相同行为的ListView?首先,您需要修改ListView的样式,将HorizontalSnapPointsType属性更改为MandatorySingle(以便图像可以像flip视图一样捕捉到正确的位置)。单元格的宽度应等于flipview的旧宽度,以确保:。很抱歉,遗漏了信息,FlipView的默认ItemsPanelTemplate是VirtualzingStackPanel,它确实支持虚拟化。好的,这正在工作,谢谢。但我不知道如何使项目的宽度延伸到屏幕的宽度。我已经测试了ListView和ListViewItem样式中的多个参数,但是这些项目要么宽度小于,因此我已经看到了下一个项目,要么宽度更大。如何实现这一点?必须将项目的宽度绑定到静态值(例如:屏幕宽度)。很高兴它为你工作,你能考虑接受它吗?它不起作用,内存使用仍然很高,当擦拭快速通过项目和内存使用率仍然很高,如果我停止擦拭项目,它不工作,内存使用仍然很高,快速浏览项目时,如果我停止浏览项目,内存使用率仍然很高。我认为问题不可能存在于
FlipView
,将uri转换为
Image
并添加到
FlipView
,它会同时转换所有项目。也许您可以尝试转换图像粒子,例如,每次转换并添加20个图像到filpview,然后显示它。当用户进入第十个项目时,继续添加接下来的20个项目,以此类推?我已经用8个大图像测试了它,内存消耗也很大。我只是尝试使用
FlipView
的ItemTemplate,直接将uri字符串作为图像控件的源代码,似乎有点快,但是有很多巨大的图像…我不确定这是否是一个好的做法。我现在不知道除了粒子显示…对不起。我认为问题不可能出在
FlipView
上,将uri转换为
Image
并添加到
FlipView
,它会同时转换所有项目。也许您可以尝试转换图像粒子,例如,每次转换并添加20个图像到filpview,然后显示它。当用户进入第十个项目时,继续添加接下来的20个项目,以此类推?我已经用8个大图像测试了它,内存消耗也很大。我只是尝试使用
FlipView
的ItemTemplate,直接将uri字符串作为图像控件的源代码,似乎有点快,但是有很多巨大的图像…我不确定这会是什么