Определенно, вам не нужна вся коллекция изображений, отображаемая в scrollviewer / stackpanel. Вы можете реализовать это разными способами. Я могу объяснить простую идею , используя одно изображение : как вы сказали, определите свойство SelectedSlide в вашей ViewModel и привяжите его к элементу управления Image ( Предпочтительно ContentControl с Image в качестве его части ContentTemplate, чтобы вы могли иметь описания и другие элементы в том же ). Это решение может дать вам возможность добавить несколько раскадровок, так что если вы увеличите свой SelectedIndex (еще одно свойство VM), запустите раскадровку, чтобы сделать анимацию «Влево», а если вы уменьшите, «Анимация вправо» заставит пользователя чувствовать себя как слайды. идут с одной стороны и идут в другую сторону. С этим набором раскадровок вы можете сделать довольно хороший UX.
Обновление (Идея 2): Да, если нам нужно, чтобы понятие предыдущего оставляло представление при появлении нового, мы можем спроектировать его, используя два ContentControls, обернутые в CustomControl (давайте назовем его SlideShowControl). SlideShowControl будет иметь свой механизм для правильной установки DataContext двух ContentControl на основе позиции selectedIndex. Я успешно применил этот элемент управления в одном из моих проектов, логика здесь заключается в переключении ContentControls через раскадровку, чтобы мы могли получить много разных эффектов, меняя раскадровку. Предположим, вы переходите от Индекса 1 к 2, ContentControlA будет анимироваться влево, и B войдет в Представление, и на основании вашего следующего щелчка ControlA будет сидеть слева или справа от Представления и поставляется с новым DataContext выбранного Просмотр.