Я использую XamlReader.Load () для загрузки внешнего файла XAML, который может содержать некоторые изображения и другие носители.
Я использую ParserContext для установки baseUri, поэтому, если пути внутри XAML-файла верны, носитель успешно загружен.
// works
var pc = new ParserContext();
pc.BaseUri = new Uri(baseUri, UriKind.RelativeOrAbsolute);
using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
return XamlReader.Load(stream, pc);
Есть ли способ узнать, какие медиа-файлы не будут загружаться? То есть, если XAML-файл содержит тег Image с источником, для которого указан путь, который не существует, могу ли я сказать во время выполнения, что изображение отображается неправильно? (Изображения будут наиболее распространенными, но другие элементы управления, такие как MediaElement, могут также загружать внешние файлы.)
Я могу придумать несколько возможных подходов:
- Анализирует файл XAML, чтобы найти любые имена файлов, и проверяет каждое из них напрямую.
- При отображении результирующего визуального дерева найдите какое-либо RoutedEvent, которое указывало бы на проблему с загрузкой внешних файлов
Какие-нибудь советы?
Редактировать : Я думаю, что материал XamlReader может отвлекать; Я получаю правильное визуальное дерево, но это может быть проблема с самими элементами управления при попытке загрузить файлы, которые не существуют. Это ошибки, которые я хочу уловить.