SilverLight中图片不能重新加载的处理方法
很多情况下,我们希望能够动态地对图片进行控制,如加载、卸载、拉伸等。
当我们在打开窗口的时候,会先将一张张的图片加载好,然后通过事件来再一步对图片控件进行控制。
我早阵子一直没能在事件中将之替换成功,也没有找到具体原因,将此问题搁置了一段时间,今天由于在整理代码时,恍然发现一个我们平时都忽略了的错误,在此指出一下,防止大家犯同样的错误。
之前我是这样写的
HRESULT MainPage::BindEventHandlers()
{
HRESULT retcode=S_OK;
MainPage mainpage;
//绑定事件
if(FAILED(retcode=CreateDelegate(&mainpage,&MainPage::OnGesture,&m_pgesturedelegate)))
return retcode;
if (FAILED(retcode=LayoutRoot->AddGestureEventHandler(m_pgesturedelegate)))
return retcode;
return retcode;
}
红色标记处为错误处
后来改为如下,就正确了
HRESULT MainPage::BindEventHandlers()
{
HRESULT retcode=S_OK;
//绑定事件
if(FAILED(retcode=CreateDelegate(this,&MainPage::OnGesture,&m_pgesturedelegate)))
return retcode;
if (FAILED(retcode=LayoutRoot->AddGestureEventHandler(m_pgesturedelegate)))
return retcode;
return retcode;
}
分析主要原因为第二次在事件中处理图片控件时,已经是无效指针了,这样就导致了图片没能替换成功。