2013-08-03 102 views
0

我有一個帶有RichTextBlock和TreeView的Silverlight 5 NavigationApplication。每次點擊某個TreeView項目時,我都會使用代碼隱藏將一些圖像添加到RichTextBlock中。問題在於有時當TreeView的SelectedItem改變時,一些添加的圖像不會出現在RichTextBlock中。但是當我多次更改TreeView的SelectedItem時,圖像再次出現! 我認爲這是因爲圖像緩存,然後嘗試使用圖像沒有緩存,但它是一樣的。 在運行時我加載圖片的代碼是這樣的:RichTextBlock中的圖像隨機獲得

var uri = new Uri(imageSource, UriKind.Relative); 
BitmapImage bitmapImage = new BitmapImage(); 
bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 
bitmapImage.UriSource = uri; 
bitmapImage.ImageFailed += image_ImageFailed; 
bitmapImage.ImageOpened += image_ImageOpened; 
var border = new Border() { Width = 500, Height = 400 }; 
var image = new Image() 
{ 
    HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch, 
    VerticalAlignment = System.Windows.VerticalAlignment.Stretch, 
    Source = bitmapImage 
}; 
border.Child = image; 
paragraph.Inlines.Add(new InlineUIContainer() 
{ 
    Child = border 
}); 

,如果我離開BitmapCreationOption到它的默認值,每個圖像只出現一次,如果我點擊後面的是樹型視圖再次,沒有圖像將在所有出現!
我已經嘗試創建不同大小的圖像,但沒有變化,而且我也測試了從絕對Uri加載圖像,但是這沒有幫助。
我將考慮RichTextBlock中的錯誤! 你認爲傢伙怎麼樣?

回答

0

我已經找到了解決辦法,我改變了BitmapImage.CreateOptions這樣的:

bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache | BitmapCreateOptions.DelayCreation; 

,一切工作就好:)