Dato un pacchetto: // URI, qual è il modo migliore per determinare se esiste effettivamente una risorsa compilata (ad esempio un'immagine PNG, compilata con un'azione di compilazione di "Risorsa") URI?Rileva se esiste una risorsa WPF, basata sull'URI
Dopo un po 'inciampare in giro, sono arrivato fino a questo codice, che funziona ma è goffo:
private static bool CanLoadResource(Uri uri)
{
try
{
Application.GetResourceStream(uri);
return true;
}
catch (IOException)
{
return false;
}
}
(Si noti che la documentazione Application.GetResourcesis wrong - viene generata un'eccezione se la risorsa non viene trovato , invece di restituire nulla, come i documenti in modo non corretto stato.)(la documentazione sono stati corretti, vedi commenti qui sotto)
non mi piace la cattura di eccezioni per rilevare un non eccezionale) risultato atteso (. E inoltre, in realtà non voglio caricare il flusso, voglio solo sapere se esiste.
C'è un modo migliore per farlo, magari con API di risorse di livello inferiore - idealmente senza caricare effettivamente il flusso e senza catturare un'eccezione?
Hanno aggiornato il documento, esso dice che esso genera un'eccezione quando la risorsa non viene trovata. – Shimmy
@Shimmy, grazie per l'aggiornamento - Ho modificato per includere tali informazioni. –
@John White: BTW, penso che dovresti contrassegnare [post di jpierson] (http://stackoverflow.com/questions/2013481/detect-whether-wpf-resource-exists-based-on-uri/2549641#2549641) come risposta. – Shimmy