none
关于在WindowsPhone中通过网络url初始化BitmapImage的问题 RRS feed

  • 问题

  • 通过一个网络url初始化一个BitmapImage类,由于网速限制图片通常需要过一点时间才能完全加载且显示出来,现在想实现一个效果,当图片未完全加载时隐藏某个窗体,待图片全部加载完后再显示,之前想到的是用ImageOpened事件但是发现没有效果,所以想请问如何动态判断该BitmapImage已经完全加载完成。当加载完成时触发某事件呢?或者别的思路实现也可以。拜托啦
    2014年8月18日 3:10

答案

  • 你好,

    可以使用async/await的方式来实现,参考下面示例代码:

            private void BtnLoad_Click(object sender, RoutedEventArgs e)
            {
                // 隐藏 MyImageControl
                MyImageControl.Visibility = System.Windows.Visibility.Collapsed;
    
                var imageSource = DownloadImage();
                MyImageControl.Source = imageSource.Result;
                MyImageControl.Visibility = System.Windows.Visibility.Visible;
            }
    
            private async Task<ImageSource> DownloadImage()
            {
                return await Task.Run(() => {
                    // 延迟5秒,模拟从网络下载图片延迟效果
                    Thread.Sleep(3000);
    
                    ImageSource img =
                        new System.Windows.Media.Imaging.BitmapImage(new Uri("Images/Children.jpg", UriKind.RelativeOrAbsolute));
    
                    return img;
                });
            }
    谢谢!


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年8月19日 4:17
    版主