在我的MainPage中,我添加了许多图像,通过制作HttpWebRequest从服务器中检索每个图像。 MainPage上还有一些链接,单击这些链接会将用户带到新页面。
我面临的问题是在MainPage本身加载所有图像之前,如果我点击MainPage上的任何链接,就会创建并显示一个新页面,并取消所有待处理的图像请求。现在,如果我通过单击后退按钮返回MainPage,则卸载的图像仍然会被卸载。
当我回到导航堆栈中的MainPage时,我不知道如何检查图像是否已经加载(如果我能够发现某些图像未加载,我可以请求服务器再次为卸载图像)。我需要一个通用的解决方案。因为MainPage内容布局中的父子关系是动态的,意味着我不知道Image控件的层次结构,Image控件可以是画布的子画面,而后者又可以添加到MainPage的Content网格中,或者可以将图像添加到一个画面中全景/枢轴的部分,然后添加到MainPage的内容网格等,....
答案 0 :(得分:2)
Image控件上有一个与之相关的事件 - > http://msdn.microsoft.com/en-us/library/system.windows.controls.image.imageopened(v=vs.95).aspx
答案 1 :(得分:1)
这应该可行,但是,我想知道为什么按下后退按钮时不会重新加载图像。我不认为任何建议的'黑客'应该是必要的。您是否使用任何自定义逻辑进行图像加载等?
答案 2 :(得分:0)
您可以检查图像温度的名称。因为在我的项目中,我在图像加载到服务器之前使用了图像临时显示。
您可以检查图像的当前名称,如果它与临时图像名称相似,则继续向下它们不会向下 我的代码:
if(((BitmapImage)img.Source).UriSource.Equals("/NhomMua;component/Image/img_temp_sale.png"))
{
//code of you
}
答案 3 :(得分:0)
我建议您查看LowProfileImageLoader http://blogs.msdn.com/b/delay/archive/2010/09/02/keep-a-low-profile-lowprofileimageloader-helps-the-windows-phone-7-ui-thread-stay-responsive-by-loading-images-in-the-background.aspx)作为以有效方式处理图像加载的通用方法。如果您特别需要能够取消并恢复加载图像,您应该能够修改该代码以便轻松处理 - 虽然我不确定您为什么要这样做,但请记住它更有效的电池下载一次击中的所有图像,而不是停止和开始。