RichTextBlock中的图像随机隐藏

时间:2013-08-03 09:37:51

标签: silverlight silverlight-5.0 image-caching richtextblock

我有一个带有RichTextBlock和TreeView的Silverlight 5 NavigationApplication。每次单击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中的一个错误! 你们觉得怎么样?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,我更改了BitmapImage.CreateOptions,如下所示:

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

一切正常:)