2014-05-06 77 views
1

我在代碼運行時更新圖像源時遇到問題。如何在代碼運行時更新XAML的圖像源代碼

我與所謂ImagePack0

我已經在xaml.cs類的靜態類的方法開始創建的圖像的XAML頁面把圖像的成靜態變量,所以我可以從各處打電話給他們。

//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接收到更新。 那麼,我該如何立即更新圖像源?

有人有什麼想法嗎?

由於提前,

回答

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線程的延續。