给定一个pack:// URI,有什么最好的方法可以告诉我们是否在该URI上存在编译资源(例如使用“Resource”构建操作编译的PNG图像)?
经过一些摸索,我想出了下面的代码,它可以工作但很笨拙:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(请注意,Application.GetResources文档有误--如果未找到资源,它会抛出异常,而不是像文档错误地声明的那样返回null。)(文档已经更正,请参见下面的注释)
我不喜欢用捕获异常来检测一个预期的(非异常的)结果。而且,除此之外,我实际上并不想加载流,我只是想知道它是否存在。
是否有更好的方法来做到这一点,也许是通过更低级别的资源API -- 最好不要实际加载流,并且不需要捕获异常?