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;
}
随着调试,看到,一个音频文件结束后,被称为不止一个。而且这个通话计数也在不断变化。
为什么我的代码会产生这种行为?