Tiger_Dog

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;

}

 分析主要原因为第二次在事件中处理图片控件时,已经是无效指针了,这样就导致了图片没能替换成功。

posted on 2010-08-06 10:00  Tiger_Dog  阅读(593)  评论(0编辑  收藏  举报

导航