我有一个带有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中的一个错误!
你们觉得怎么样?
答案 0 :(得分:0)
我找到了解决方案,我更改了BitmapImage.CreateOptions,如下所示:
bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache | BitmapCreateOptions.DelayCreation;
一切正常:)