我在代码运行时更新图像源时遇到问题。
我有一个xaml页面,其中包含一个名为ImagePack0的图像
我在xaml.cs类的开头创建了一个静态类的方法,将图像放入静态变量中,以便我可以从任何地方调用它们。
//Put the image's in to static value's
StaticClass.PutImageintoStatic(ImagePack0);
之后代码进行某些计算。然后当它知道应该在图像位置存储什么图像时,它会调用这个静态方法。:
public static void PutImageIntoSource()
{
StaticClass.ImagePack0.Source = new BitmapImage(new Uri("\\Randomlocation\\RandomPicture.png", UriKind.Relative));
}
我调用这个静态方法,然后执行此操作后继续进行其他计算。 现在这段代码有效。唯一的问题是xaml在我的代码停止运行时收到更新。 那么如何立即更新图像源呢?
有人有任何想法吗?
提前致谢,
答案 0 :(得分:2)
您的XAML仅在您的代码完成运行时才会收到更新,因为您正在占用具有工作的UI线程(在您的情况下进行一些计算),这不会让您的XAML正确更新。
您需要将工作卸载到后台线程,并在准备好添加图像时更新UI。
假设您使用的是.NET 4.5,请使用Task
库:
public void SomeMethodWithCalculation()
{
// offload work to background thread, and update the UI when done.
Task.Run(() => StaticClass.PutImageintoStatic(ImagePack0)).ContinueWith(task => PutImageIntoSource, TaskScheduler.FromCurrentSynchronizationContex())
}
假设您正在从UI线程调用工作,TaskScheduler.FromCurrentSynchronizationContext
将在该UI线程上执行延续。