2013-04-25 5 views
0

Здравствуйте, я хочу, чтобы мой список воспроизведения воспроизводился после воспроизведения последнего файла. Как сбросить индекс, чтобы он повторялся до начала списка? Shownextimage обрабатывает носители один за другим, чтобы отображать на элементе мультимедиа. DispatcherTimer показывает изображения 20 секунд, а затем продолжает.Повторите список, который открывает файлы

Это то, что я получил.

Dictionary<string, string> Listbox1Dict = new Dictionary<string, string>(); 
    public static List<string> images = new List<string> { ".JPG", ".JPE", ".BMP", ".GIF", ".PNG" }; // Bildtyper som stöds 
    public static List<string> movies = new List<string> { ".WMV", ".WAV", ".SWF", ".MP4", ".MPG", ".AVI" }; 
    List<string> paths = new List<string>(); 
    DispatcherTimer dispatcherTimer = new DispatcherTimer(); 
    DispatcherTimer NextImageTimer = new DispatcherTimer(); 
    int x = 20; 
    private int currentSongIndex = -1; 
    private void ShowNextImage() 
    { 
     if (currentSongIndex == -1) 
     { 
      currentSongIndex = Listbox1.SelectedIndex; 
     } 
     currentSongIndex++; 

     var selected = Listbox1.Items[currentSongIndex]; 
     string s = selected.ToString(); 
     if (Listbox1Dict.ContainsKey(s)) 
     { 

      if (images.Contains(System.IO.Path.GetExtension(s).ToUpperInvariant())) 
      { 

       if (currentSongIndex < Listbox1.Items.Count) 
       { 
        mediaElement1.Source = new Uri(Listbox1Dict[s]); 

       } 
      } 
      else if (movies.Contains(System.IO.Path.GetExtension(s).ToUpperInvariant())) 
      { 
       if (currentSongIndex < Listbox1.Items.Count) 
       { 
        dispatcherTimer.Stop(); 
        mediaElement1.Source = new Uri(Listbox1Dict[s]); 
       } 
      } 
     } 
    } 

таймерами:

private void dispatcherTimer_Tick(object sender, EventArgs e) 
    { 
      ShowNextImage(); 
    } 
    private void dispatch() 
    { 
     dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
     dispatcherTimer.Interval = new TimeSpan(0, 0, 0, x); 
    } 

ответ

0

Может быть что-то вроде этого является то, что вы хотите:

<StackPanel> 
    <ListBox SelectedIndex="{Binding ElementName=Index, Path=Value}"> 
     <ListBoxItem>First</ListBoxItem> 
     <ListBoxItem>Second</ListBoxItem> 
     <ListBoxItem>Third</ListBoxItem> 
    </ListBox> 
    <Slider x:Name="Index" Minimum="0" Maximum="2" Value="2" TickFrequency="1" IsSnapToTickEnabled="True" TickPlacement="BottomRight"/> 
</StackPanel> 

В данном примере выбран индекс ListBox связан со значением ползунка , Ползунок следует заменить индексом в вашем ViewModel, который уведомляет об изменении. Ваш индексный указатель должен увеличиваться после окончания воспроизведения песни и установить значение 0, если песня была последней. Я думаю, что это должно быть обработано в вашем vm.

+0

Хедж Йохан! Tack för svar. Хэп копплар-джойстик слайдера до mitt mediaelement? Здравствуйте, Йохан, спасибо за ответ. Как подключить слайдер с помощью Mediaelement? – Sneakybastardd

+0

Возможно, я неправильно понял ваш вопрос, является ли список «внутри» медиаэлементом? –

+0

В любом случае вы можете сделать это в моем коде, который я предоставил? IF плейлист закончился reset Indexvalue to 1 Или что-то подобное – Sneakybastardd

Смежные вопросы