将BitmapImage.UriSource设置为不存在的Uri不会引发错误

时间:2014-07-22 10:03:00

标签: c# wpf uri bitmapimage

我正在尝试以编程方式创建一个WPF图像,但是无论我在Uri构造函数中放置什么字符串,它都不会引发任何错误......即使它找不到该文件:

BitmapImage logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri("/blah;component/Themes/buh.png", UriKind.Relative);
logo.EndInit();
Image im = new Image() { Source = logo };

如何测试我写的Uri是否真的存在?

1 个答案:

答案 0 :(得分:0)

默认情况下,位图在屏幕上显示之前不会加载(例如,将Image控件添加到应用程序中的某个可见容器中)。

但是,您可以通过设置BitmapCacheOption.OnLoad来强制立即加载。现在EndInit()将抛出异常。

var logo = new BitmapImage();
logo.BeginInit();
logo.UriSource = new Uri("/blah;component/Themes/buh.png", UriKind.Relative);
logo.CacheOption = BitmapCacheOption.OnLoad;
logo.EndInit();

也就是说,在检索图像资源时不应使用UriKind.Relative。而是使用适当的Resource File Pack URI之类的

logo.UriSource = new Uri("pack://application:,,,/blah;component/Themes/buh.png");