Изменение источника изображения wpf на jpg во время выполнения, которое не является ресурсом - PullRequest
0 голосов
/ 03 января 2011

У меня есть личное приложение-ролик, которое загружает изображения во время выполнения, и я хочу отображать изображения вместо вставленного изображения-заполнителя (Если изображение недоступно)

Код, который я нашел, который должен сделать трюк, ничего не меняет

У меня есть этот WPF контроль изображения

<Image Name="MovieImage" Height="Auto" Width="Auto" Grid.Column="2" Grid.Row="0" Grid.ColumnSpan="2" Grid.RowSpan="4" Source="NoPhotoAvailable.jpg" />

и тогда у меня есть

public void MovieList_SelectionChanged(Movie SelectedMovie)
    {
        this.SelectedMovie = SelectedMovie;
        BitmapImage bi = new BitmapImage();

        bi.BeginInit();
        bi.UriSource = new Uri("/155.jpg", UriKind.RelativeOrAbsolute);
        bi.EndInit();
        Console.WriteLine(bi.UriSource.ToString());

        MWV.MovieImage.Source = bi;
    }

Где MWV, где управление изображением находится на

Изображение помещается в папку приложений и называется 155.jpg, но ничего не отображается вообще

Я нашел много примеров, которые предполагают, что это должно быть довольно близко к решению, но, по-видимому, не правильно

Решение:

        public void MovieList_SelectionChanged(Movie SelectedMovie)
    {
        if (MovieCount == 0)
        {
            Console.WriteLine(MovieCount.ToString());
            MWV.MovieImage.Source = new BitmapImage(new Uri("NoPhotoAvailable.jpg", UriKind.RelativeOrAbsolute));
        }
        else
        {
            this.SelectedMovie = SelectedMovie;
            BitmapImage bi = new BitmapImage();

            bi.BeginInit();
            string path = Path.Combine(Path.GetDirectoryName(typeof(MainWindowController).Assembly.Location), this.SelectedMovie.TMDBID.ToString() + ".jpg");
            bi.UriSource = new Uri(path, UriKind.RelativeOrAbsolute);
            bi.EndInit();
            Console.WriteLine(bi.UriSource.ToString());

            MWV.MovieImage.Source = bi;
        }
    }

1 Ответ

1 голос
/ 03 января 2011

Удалите / из вашего пути.
Путь, начинающийся с /, представляет собой абсолютный путь, поэтому ваш код ищет файл с именем 155.jpg вкорень диска .

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