ImageSourceConverter - System.NullReferenceException - PullRequest
1 голос
/ 12 февраля 2012

Я пытаюсь загрузить внешний XML-файл, который содержит ссылки на изображения в WPF.

<page>   
    <foreground path="/data/images/attract/slide1/foreground.png">
    <background path="/data/images/attract/slide1/background.png">
</page>

Я анализирую XML и использую следующий код для преобразования каждого атрибута пути в ImageSource.

string backgroundString = (string)backgroundNode.Attributes["path"].Value;
Debug.WriteLine(backgroundString); //returns "/data/images/attract/slide1/background.png"
avm.BackgroundImage = new ImageSourceConverter().ConvertFromString(backgroundString) as ImageSource;

Анализируемая мной фоновая строка не равна нулю, когда я записываю ее в выходные данные отладки.Однако я получаю следующую ошибку:

A first chance exception of type 'System.NullReferenceException' occurred in PresentationCore.dll
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at System.ComponentModel.TypeConverter.ConvertFromString(String text)

Кто-нибудь видит, что я делаю неправильно?Любая помощь будет высоко ценится.

Спасибо, Брайан

1 Ответ

5 голосов
/ 12 февраля 2012

Вы получаете это исключение, если файл не найден. Во-первых, вы должны использовать BitmapImage в коде, конвертеры предназначены для XAML-парсера. Во-вторых, относительные пути будут интерпретироваться как указывающие на ресурс в приложении, если это не так, и вместо этого вы хотите указать файлы, относящиеся к исполняемому файлу, вы должны добавить pack://siteoforigin:,,, (см. Pack URIs в WPF * 1004. *).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...