【发布时间】:2020-06-06 16:41:31
【问题描述】:
在我的 UWP 应用程序中,我有一个 ListView,所有歌曲都显示在 Music Library 文件夹中。当您单击一首歌曲时,它将播放它并在第一首歌曲停止时移至下一首歌曲。所有这一切都很好,但是当最后一首歌播放并到达结尾时,我得到了这个错误
System.ArgumentException
HResult=0x80070057
Message=Value does not fall within the expected range.
Source=Windows
StackTrace:
at Windows.UI.Xaml.Controls.Primitives.Selector.put_SelectedIndex(Int32 value)
这是我的代码:
private async void objMediaPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
mediaElement.Stop();
if (AudioFilesLV.SelectedIndex <= AudioFilesLV.Items.Count)
{
AudioFilesLV.SelectedIndex = AudioFilesLV.SelectedIndex += 1;
var file = await KnownFolders.MusicLibrary.GetFileAsync(AudioFilesLV.SelectedItem.ToString());
if (file != null)
{
var stream = await file.OpenReadAsync();
mediaElement.SetSource(stream, file.ContentType);
mediaElement.Play();
}
}
else
{
mediaElement.Stop();
}
}
private void mediaItemList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void objMediaPlayer_MediaOpened(object sender, RoutedEventArgs e)
{
mediaElement.Play();
}
应用程序在此行崩溃:
AudioFilesLV.SelectedIndex = AudioFilesLV.SelectedIndex += 1;
我无法弄清楚问题是什么。我认为它正在寻找下一首歌,但没有。所以我需要告诉应用在播放完最后一首歌后停止,但不知道该怎么做?
谢谢
编辑
private async void objMediaPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
int LastPlayedIndex;
LastPlayedIndex = AudioFilesLV.SelectedIndex;
AudioFilesLV.SelectedIndex = AudioFilesLV.SelectedIndex = 1;
var file = await KnownFolders.MusicLibrary.GetFileAsync(AudioFilesLV.SelectedItem.ToString());
if (AudioFilesLV.SelectedIndex < AudioFilesLV.Items.Count && AudioFilesLV.SelectedIndex != LastPlayedIndex)
{
var stream = await file.OpenReadAsync();
mediaElement.SetSource(stream, file.ContentType);
mediaElement.Play();
}
else
{
mediaElement.Stop();
}
}
【问题讨论】: