Я наконец решил свою проблему с помощью виртуальной машины (MVVM). Я объясняю, если у кого-то есть такая же проблема:
Сначала у меня есть Listbox, который связан со списком в моей ViewModel. Я подключил команду к событию SelectionChanged следующим образом:
<ListBox x:Name="EbookBox" ItemTemplate="{StaticResource ListItemTemplate}" Height="505" ItemsSource="{Binding OBooks, Mode=OneWay}" SelectedItem="{Binding SelectedBook, Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand Command="{Binding LoadCoverCommand, Mode=OneWay}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ListBox>
Затем в моей функции Load cover я создаю URL обложки и создаю bitmapImage. Но прежде я инициализирую логическое значение, чтобы сказать, что оно загружается:
IsLoadingCover = true;
// Create the Bitmap and save it to the caching directory
CurrentCover = new BitmapImage(new Uri(cover));
CurrentCover.DownloadCompleted += DownloadCompleted;
Наконец, когда изображение загружается, я установил для индикации загрузки значение false.
И в моем представлении мой элемент управления виден только, когда IsLoadingCover имеет значение true (Bool to Visibility Converter):
<control:LoadingAnimation HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,123,0,0" Visibility="{Binding IsLoadingCover,Converter={StaticResource BoolToVisibilityConverter}}"/>