【问题标题】:How to set a placeholder for a Image control (while it downloads)?如何为图像控件设置占位符(下载时)?
【发布时间】:2010-12-14 22:07:39
【问题描述】:

我有一个显示图像列表的应用程序。图片来源设置为http URL,图片自动下载显示。

但是,当应用程序需要一些时间下载时,图像控件没有显示任何内容。这样用户体验不好。

如何为每个图像控件显示加载占位符图像或加载量规?

【问题讨论】:

    标签: silverlight image windows-phone-7


    【解决方案1】:

    在加载图像时,它是透明绘制的。您可以利用它来在加载时在图像下方显示一个元素。例如,您可以有一个与 XAP 捆绑在一起的股票图像,它代表一个默认头像。或者,您可以显示 XAML 加载动画。然后当图片加载完成后,它会遮挡后面的元素。

    如果您需要最小化您的可视化树并且您的场景允许使用代码解决方案,那么 Mick 的建议是一个很好的建议。这个建议并不完美,但它确实可以更轻松地处理占位符图像未缩放/居中但加载的图像被缩放/拉伸的情况。

    【讨论】:

    • 想过这样做。如果没有更好的解决方案,我会这样做。谢谢。
    【解决方案2】:

    您可以将图像源设置为占位符,然后当 ImageOpened 触发时,将其更改为远程 url 并让它运行。

    【讨论】:

    • 谢谢米克。我尝试先将图像源设置为占位符。然后,当我将源设置为远程 url 时,图像在下载期间将是空的一段时间。可以更好吗?
    • 您最初可以使用两个不同的图像控件来制作 UserControl。当不再需要占位符实例时,可以按 z 顺序删除/隐藏/隐藏。我考虑先发布这个,然后认为上面的内容可能更优雅。
    • 是的,我也喜欢更优雅的东西:)
    【解决方案3】:

    除了 2 个其他建议(来自 Josh 和 Mick)之外,您还可以在 xaml 中显示一个占位符,然后在代码中使用 HttpWebRequest 在后台下载实际所需的图像。然后在图像完全下载后将其保存到独立存储中,然后将源更新为显示的图像。

    是的,这比其他解决方案更复杂,但会简化视觉树并避免在下载图像时显示空白图像。
    它还可以让您离线缓存图像。

    【讨论】:

      【解决方案4】:

      有趣的是有多少选项可以解决这个问题。

      您可能还想考虑 Ben Gracewood 的图像缓存实现,或者在他的博客 cmets 中似乎是该想法的发展。

      One-time Cached Images in Windows Phone 7 « Ben.geek.nz

      Peter Nowaks Mobile Blog - “Intelligent” Image Caching for WP 7

      如果感兴趣的话,这里有一些关于讨论的背景信息。

      Image control cache duration?

      【讨论】:

        猜你喜欢
        • 2020-05-23
        • 2016-03-14
        • 2016-12-30
        • 1970-01-01
        • 2014-05-12
        • 2014-05-22
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        相关资源
        最近更新 更多