Невозможно установить источник изображения в коде позади - PullRequest
4 голосов
/ 16 марта 2012

Существует множество вопросов и ответов, касающихся установки источника изображения в коде, например: Настройка источника изображения WPF в коде.

Я выполнил все эти шаги, но не смогустановить изображение.Я кодирую в WPF C # в VS2010.Все мои файлы изображений находятся в папке с именем " Images ", и для всех файлов изображений установлено значение Копировать всегда Действие сборки установлено на Ресурс , как указано в документации.

Мой код выглядит следующим образом.Я устанавливаю dog.png в XAML и заменяю его на cat.png в коде позади.

// my XAML
<Image x:Name="imgAnimal" Source="Images/dog.png" />

// my C#
BitmapImage img = new BitmapImage();
img.UriSource = new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png");
imgAnimal.Source = img;

Затем я получаю пустое, пустое изображение пустоты,Я не понимаю, почему .NET делает настройку изображения настолько сложной ... ш

[РЕДАКТИРОВАТЬ]

Так работает следующее

imgAnimal.Source = new BitmapImage(new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png"));

Это работает, но я не вижу никакой разницы между двумя кодами.Почему раннее не работает, а второе работает?Для меня они одинаковы ..

1 Ответ

11 голосов
/ 16 марта 2012

Попробуйте следующее:

imgAnimal.Source = new BitmapImage(new Uri("/FooApplication;component/Images/cat.png", UriKind.Relative));

По умолчанию UriKind равно Абсолют , лучше использовать Относительный один.

[EDIT]

Используйте BeginInit и EndInit :

BitmapImage img = new BitmapImage();
img.BeginInit();
img.UriSource = new Uri(@"pack://application:,,,/FooApplication;component/Images/cat.png");
img.EndInit();
imgAnimal.Source = img;
...