Изображения внутри RichTextBlock случайно скрываются

У меня есть приложение Silverlight 5 NavigationApplication с RichTextBlock и TreeView. каждый раз, когда щелкает один из элементов TreeView, я добавляю несколько изображений в RichTextBlock с помощью кода программной части. проблема в том, что иногда при изменении элемента TreeView SelectedItem некоторые из добавленных изображений не отображаются внутри RichTextBlock. но когда я несколько раз меняю элемент TreeView SelectedItem, изображение появляется снова! Я подумал, что это из-за кеширования изображений, затем попытался не использовать кеш для изображений, но это то же самое. мой код для загрузки изображений во время выполнения таков:

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 значение по умолчанию, каждое изображение будет отображаться только один раз, и если я снова верну этот TreeViewItem, изображения вообще не появятся!
Я пробовал создавать изображения другого размера, но изменений не было, и Также я тестировал загрузку изображений из абсолютного URI, но это не помогло.
Я подумаю об ошибке в RichTextBlock! Что вы думаете, ребята?


person Amir Oveisi    schedule 03.08.2013    source источник


Ответы (1)


Я нашел решение, я изменил BitmapImage.CreateOptions следующим образом:

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

и все работает отлично :)

person Amir Oveisi    schedule 14.08.2013