0

我在 WPF C# 中有一个代码,用于从 Web 加载图像,如下所示:

if (myImgURL != "")
{
    var imgBitmap = new BitmapImage();
    imgBitmap.BeginInit();
    imgBitmap.UriSource = new Uri(myImgURL, UriKind.RelativeOrAbsolute);
    imgBitmap.CacheOption = BitmapCacheOption.OnLoad;
    imgBitmap.EndInit();
    myImgControl.Source = imgBitmap;
}

它工作得很好,但有时需要一段时间才能显示图像(如果互联网很慢的话)。如何在图像加载时显示并启用ProgressRing(来自Mahapps.Metro工具包),然后在显示图像时消失?

我不知道下载图像和完全加载图像时的任何事件触发器。

4

1 回答 1

0

看一下 BitmapSource 类(BitmapImage 的基类)中的以下事件:


只是一个注释。您正在从 Uri 创建一个 BitmapImage 并立即显示它。因此无需设置BitmapCacheOption.OnLoad(仅当您从应在 之后立即关闭的流中加载时才需要设置EndInit)。所以你可以像这样缩短你的代码:

if (!string.IsNullOrEmpty(myImgURL))
{
    var imgBitmap = new BitmapImage(new Uri(myImgURL));
    myImgControl.Source = imgBitmap;

    if (imgBitmap.IsDownloading)
    {
        // start download animation here

        imgBitmap.DownloadCompleted += (o, e) =>
        {
            // stop download animation here
        };

        imgBitmap.DownloadFailed += (o, e) =>
        {
            // stop download animation here
        };
    }
于 2013-08-19T19:34:28.760 回答