2013-02-17 84 views
1

我有一个媒体播放器必须播放项目列表。用户可以选择其中一个,所以项目必须可选,另一方面,他们都可以按顺序播放。但是当我按顺序排队时,看到那个madia球员跳过了一些物品。例如;媒体元素跳过播放列表中的某些项目

1 -> is played 
2 -> is played 
3 -> is skipped 
4 -> is played 
5 -> is skipped 
6 -> is skipped 
7 -> is skipped 
8 -> is played 

我无法理解这个问题的原因。有想法吗?

这是我的媒体元素;

<StackPanel x:Name="PlayerStackPanel" Orientation="Horizontal"> 
     <MediaElement x:Name="Player" 
         MediaOpened="Player_MediaOpened"  
         MediaEnded="Player_OnMediaEnded"> 
     </MediaElement> 
    </StackPanel> 

选择第一项后,选择已更改的代码运行;

void ItemListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (this.UsingLogicalPageNavigation()) this.InvalidateVisualState(); 

     PlayView(); 

     selectedItem = sender as Selector; 
     ContentItem pc = (ContentItem)selectedItem.SelectedItem; 
     if (pc != null && !string.IsNullOrEmpty(pc.AudioFilePath)) 
     { 
      Player.Source = new Uri(this.BaseUri, "../Assets/" + pc.AudioFilePath); 
      Player.Play(); 
     } 
     else 
      Player.Source = null;   
    } 

当第一个音频项目结束,Player_OnMediaEnded方法被称为 我想增加的selectedIndex编程,这件事之后,选择再次改变运行。

private void Player_OnMediaEnded(object sender, RoutedEventArgs e) 
    { 
     ticks.Stop(); 
     ticks.Tick -= ticks_Tick; 
     Player.Stop(); 
     if (this.itemListView.SelectedIndex != contentItems.Count-1) 
     this.itemListView.SelectedIndex += 1; 
    } 

随着调试,看到,一个音频文件结束后,被称为不止一个。而且这个通话计数也在不断变化。

为什么我的代码会产生这种行为?

回答

0

已解决。

我正在使用持续时间滑块,当媒体播放器结束时,它也必须结束。但在某些情况下,它们不能同步,因此持续时间滑块不能正确地为排队的音频项目正常工作,它会立即完成下一个项目并跳过其他项目。

相关问题