Источник изображения привязан к отсутствующему файлу - PullRequest
2 голосов
/ 30 апреля 2010

Как я могу отобразить изображение по умолчанию, если отсутствует связанный файл пути?

<Image  Source="{Binding DisplayedBook.ImagePath}" />

Мое решение: Использовал конвертер, который проверяет, существует ли изображение, и возвращает соответствующий путь.

Ответы [ 5 ]

6 голосов
/ 30 апреля 2010

, если вы не хотите возвращать изображение по умолчанию из ImagePath getter, тогда другой подход - вернуть null.

public string ImagePath
{
   get
   {
     return File.Exists(m_Path) ? m_Path : null;
   }
}

и в XAML использовать свойство TargetNullValue Binding

<Image  Source="{Binding DisplayedBook.ImagePath, TargetNullValue={StaticResource SomeImageResource}}" />
4 голосов
/ 30 апреля 2010

Если с этим XAML связан кодовый код (т. Е. Не шаблон), вы можете установить изображение по умолчанию для события ImageFailed:

<Image  Source="{Binding ImagePath}" ImageFailed="Image_ImageFailed" />

и обработчик:

    private void Image_ImageFailed(object sender, ExceptionRoutedEventArgs e)
    {
        Image image = e.Source as Image;
        if (image != null)
            image.Source = new BitmapImage(new Uri("http://SomeDefaultImagePath.jpg"));
    }
1 голос
/ 30 апреля 2010

Вы, вероятно, можете сделать что-то вроде этого:

Получить путь изображения в пути.

if (!File.Exists(path))
{
    BitmapImage image = new BitmapImage();

    image.BeginInit();
    image.UriSource = new Uri(path);
    image.DecodePixelWidth = Convert.ToInt32(img.Width);
    image.EndInit();

    //Set the image corresponding to that bound
    this.img.Source = image;
}
1 голос
/ 30 апреля 2010

Я не использую wpf, поэтому я не знаю, существует ли такая особенность.

Но я бы реализовал такую ​​вещь в методе получения DisplayedBook.ImagePath. Он проверяет, существует ли файл, и если нет, возвращает путь к некоторому образу по умолчанию.

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

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

...