Используйте триггеры:
В XAML:
<Image Source="{Binding CurrentImage}" >
<Image.Triggers>
<EventTrigger RoutedEvent="Image.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(Image.Opacity)" From="0" To="1" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
<Button Content="Next image" MouseLeftButtonDown="NextImageClick"/>
В классе модели:
public BitmapImage CurrentImage { get; set; }
public List<BitmapImage> Images { get; set; }
private int _imageIndex = 0;
public void NextImageClick(object sender, MouseButtonEventArgs e)
{
if (_imageIndex >= Images.Count) _imageIndex = 0;
CurrentImage = Images[imageIndex];
RaisePropertyChanged("CurrentImage"); //необходимо реализовать INotifyPropertyChanged в классе модели
_imageIndex++;
}
Должно сработать :)
При надобности, анимацию можно сделать любую другую.