Media元素跳过播放列表中的某些项目

本文关键字:项目 播放列表 元素 Media | 更新日期: 2023-09-27 18:00:03

我有一个媒体播放器,它必须播放项目列表。用户可以选择其中一个,这样项目必须是可选择的,在另一边,所有项目都可以按顺序播放。但当我按顺序等待比赛时,看到马迪亚选手跳过了一些项目。例如

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>

选择第一个项目后,selectionchanged代码运行;

    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;
    }

通过调试,看到一个音频文件结束后,medied被调用了多个。而且这种呼叫次数也在不断变化。

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

Media元素跳过播放列表中的某些项目

已解决。

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