Настройка Image.Source не обновляется при загрузке с ресурса - PullRequest
3 голосов
/ 30 мая 2010

У меня есть это определение в моем XAML:

<Image Name="AlbumArt" Source="/AlbumChooser2;component/Resources/help.png" />

Изображение отображается при запуске.

В моем коде я ищу mp3 для воспроизведения и отображаю соответствующий обложку альбома в этом Image. Теперь, если нет связанного изображения, я хочу отобразить изображение без изображения. Итак, я определил один и загружаю его, используя:

BitmapImage noImage = new BitmapImage(
              new Uri("/AlbumChooser2;component/Resources/no_image.png",
                      UriKind.Relative));

У меня есть вспомогательный класс, который находит изображение, если оно есть (возвращает его как BitmapImage), или возвращает ноль, если его нет:

if (findImage.Image != null)
{
    this.AlbumArt.Source = findImage.Image; // This works
}
else
{
    this.AlbumArt.Source = noImage; // This doesn't work
}

В случае, если изображение найдено, источник обновляется и отображается обложка альбома. В случае, когда изображение не найдено, я ничего не отображаю - только пустое.

Я не думаю, что это неправильная установка AlbumArt.Source, но загрузка BitmapImage.

Если я использую другое изображение, оно работает (например, исходное изображение справки), но даже если я воссоздаю изображение «без изображения», оно не работает. Что может быть не так?

Ответы [ 2 ]

3 голосов
/ 30 мая 2010

Несколько идей, о которых нужно подумать / попробовать:

Каковы настройки Visual Studio для no_image.png? Это «встроенный ресурс» или «контент»? Вы установили «Копировать всегда» или «Копировать, если новее»?

Похоже, вы ссылаетесь на изображение как на ресурс, но добавили ли вы его в ресурсы своего проекта? Если это ресурс, я считаю, что вы должны установить для него свойства «Ресурс» и «Никогда не копировать».

Что произойдет, если вы сделаете UriKind UriKind.Absolute и зададите путь к фактическому файлу на диске?

Если вы посмотрите на noImage в отладчике в точке, в которой вы устанавливаете его на Source, он определенно ненулевой и имеет ли он правильную ширину / высоту?

0 голосов
/ 30 мая 2010

попробуйте

Привязка растрового изображения к изображению в формате Wpf?

когда wpf компилируется в каталог ресурсов .exe и становится частью вашего .exe и вы не можете получить к нему доступ из этого кода

BitmapImage noImage = new BitmapImage(
          new Uri("/AlbumChooser2;component/Resources/no_image.png",
                  UriKind.Relative))

поэтому Вы должны использовать этот код Resources.no_image.png и преобразовать его в BitmapImage.

С уважением REV

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