c# - 在看到堆栈面板之前不要加载图像源
问题描述
我的程序需要在一个可滚动视图(大约 1K)中加载大量图像
我的代码:
<ScrollViewer>
<VirtualizingStackPanel Orientation="Vertical"> <!-- Stack panel of stack panels -->
<StackPanel Orientation="Horizontal">
<local:Widget Text="1" Image="https://exaple.com/" /> <!-- local class purpose of is placing image and text in one line -->
<local:Widget Text="1" Image="https://exaple.com/" />
<local:Widget Text="1" Image="https://exaple.com/" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<local:Widget Text="1" Image="https://exaple.com/" />
<local:Widget Text="1" Image="https://exaple.com/" />
<local:Widget Text="1" Image="https://exaple.com/" />
</StackPanel>
...
</VirtualizingStackPanel>
</ScrollViewer>
问题是在启动 wpf 之前会去每个网站并一次下载所有图像,我怎么能说 wpf 下载并在用户看到它们时显示它们?
- - 编辑
我已经确定了 scrollviewer 要求所有内容一次的问题,无论我是否使用CanContentScroll
,我也尝试使用ListBox
with VirtualizingPanel.ScrollUnit="Pixel"
,但它也没有用,仍在寻找答案
解决方案
经过大约 7 个小时的纯粹地狱后,我做到了(我的意思是我确实找到了)
加载大量图像以显示在 WrapPanel
没有缓存和其他对我来说不那么重要的类我找到了一个 ScrollViewer 实现,它检查每个如果视图中有任何StackPanel
's,则滚动已更改,并且DataTrigger
它会更改为您想要的任何内容,并且尽管我喜欢这个答案,但我越讨厌事情的工作方式)希望我会帮助任何人
推荐阅读
- c - 重新创建 strlcat 函数,被分段错误杀死(信号 -11)
- spring-batch - 无法安装本地云服务
- android - 从java调用Kotlin代码-> java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/concurrent/CompletableFuture;
- javascript - 在 HTML、Javascript 项目中为材料设计组件添加可见性切换?
- java - 如何在 Android Studio 中使用带有 TextView 的矩形背景?
- javascript - 基于真标志比较javascript中的两个对象
- raspberry-pi - 使用 GStreamer 打包现有的 h264 流并通过网络将其发送到 VLC
- docker - 如何从主机上的虚拟机访问 docker 应用程序?
- elasticsearch - 要求 Elasticsearch 高亮用双引号 (") 括起来的单词,而不是截断它们
- python - 正则表达式 Python、空格和加号