0

我有一个带有 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 中的一个错误!你们觉得怎么样?

4

1 回答 1

0

我找到了解决方案,我像这样更改了 BitmapImage.CreateOptions:

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

一切都很好:)

于 2013-08-14T08:23:47.243 回答