Dado un URI de paquete: //, ¿cuál es la mejor manera de saber si un recurso compilado (por ejemplo, una imagen PNG, compilado con una Acción de compilación de "Recurso") existe realmente en ese URI?Detectar si existe recurso WPF, basado en URI
Después de algún dando tumbos, me ocurrió con este código, que funciona, pero es torpe:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(Tenga en cuenta que la documentación Application.GetResourcesis wrong - lanza una excepción si no se encuentra el recurso , en lugar de volver nula al igual que los documentos indican incorrectamente.)(los documentos han sido corregidos, ver comentarios más abajo)
no me gusta la captura de excepciones para detectar un no excepcional resultado esperado(). Y además, en realidad no quiero cargar la transmisión, solo quiero saber si existe.
¿Existe alguna forma mejor de hacerlo, quizás con API de recursos de nivel más bajo, idealmente sin cargar realmente la transmisión y sin capturar una excepción?
Se actualizó el documento, dice que arroja una excepción cuando no se encuentra el recurso. – Shimmy
@Shimmy, gracias por la actualización: he editado para incluir esa información. –
@John White: Por cierto, creo que deberías marcar [la publicación de jpierson] (http://stackoverflow.com/questions/2013481/detect-whether-wpf-resource-exists-based-on-uri/2549641#2549641) como responder. – Shimmy