C# 将BitmapImage.UriSource设置为不存在的Uri不会';t上升误差

C# 将BitmapImage.UriSource设置为不存在的Uri不会';t上升误差,c#,wpf,uri,bitmapimage,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 = log

我试图以编程方式创建一个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是否真的存在?

默认情况下,位图只有在屏幕上显示时才会加载(例如,通过将
图像
控件添加到应用程序中的某个可见容器中)

但是,您可以通过设置
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
。相反,使用一个合适的方法

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