C# 图像不会在UI上刷新

C# 图像不会在UI上刷新,c#,windows-phone-7,xaml,windows-phone-8,windows-phone,C#,Windows Phone 7,Xaml,Windows Phone 8,Windows Phone,我在我的WindowsPhoneXAML页面中有一些图像,我正在以这种方式根据逻辑动态地从代码后面设置它们的源代码 img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Images/MAP/" + Path + ".png"); 当页面加载和图像加载完美时,它工作正常,但根据我的应用程序逻辑,我显示了一个消息框,它是基于XNA的自定义消息框,带有两个按钮。一旦用户单击OK,我必须再次动态加载图像,

我在我的WindowsPhoneXAML页面中有一些图像,我正在以这种方式根据逻辑动态地从代码后面设置它们的源代码

 img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Images/MAP/" + Path + ".png");
当页面加载和图像加载完美时,它工作正常,但根据我的应用程序逻辑,我显示了一个消息框,它是基于XNA的自定义消息框,带有两个按钮。一旦用户单击OK,我必须再次动态加载图像,我调用了上述相同的函数,但当时它给了我一个异常
“无效的跨线程异常”
,这可能是由于后台线程上的图像源设置,而不是UI线程上的图像源设置,所以我尝试了
Dispatcher
以及类似的操作

 this.Dispatcher.BeginInvoke(new System.Action(delegate()
                {
                    img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Images/MAP/" + Path + ".png");
                }));
使用此dispatcher时没有异常,但不会刷新
UI


谁能告诉我为什么会这样吗?我也尝试在同一个消息框OK按钮上导航,我再次得到相同的“
无效跨线程
”异常

尝试向img1添加事件处理程序。ImageFailed,如果图像无法加载,它将以静默方式加载,除非您正在侦听该事件。

无效跨线程异常在尝试设置UI属性(
img1.Source
)或尝试从非UI线程的线程执行任何其他类型的UI操作时确实存在问题。使用
Dispatcher
是发送要在UI线程上执行的代码的正确方法(这也是启动导航的方法)。对于映像失败,请尝试钩住
ImageFailed
事件,如下所示。