MediaElement.SetSource() 自动播放我的 MP3

MediaElement.SetSource() automatically plays my MP3

我目前正在使用 UWP 在 C# 中开发一个项目。 我需要播放 MP3 文件但不是立即播放,但如果我单击我的应用程序中的按钮。 所以我创建了一个按钮 "load MP3",其中 运行 的方法如下: load MP3 method

private async void open_MP3_Click(object sender, RoutedEventArgs e)
    {

        mp3.AudioCategory = Windows.UI.Xaml.Media.AudioCategory.Media;


        var picker = new Windows.Storage.Pickers.FileOpenPicker();
        picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.List;
        picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.ComputerFolder;
        picker.FileTypeFilter.Add(".mp3");

        StorageFile sf = await picker.PickSingleFileAsync();
        var stream = await sf.OpenAsync(FileAccessMode.Read);
        mp3.SetSource(stream, sf.ContentType);
        //await Task.Delay(3500);
        //mp3.Pause();
    }

如果我 运行 此代码,我选择的歌曲将立即播放,而无需我单击我创建的播放按钮。 如果我在 mp3.SetSource() 行设置断点,代码将不会立即播放歌曲。我尝试使用 mp3.Pause() 方法解决该问题,但必须插入 350 毫秒的延迟才能正常工作。如果我选择很长的延迟(比如这里的 3500 毫秒),歌曲开始播放并在 3.5 秒后停止,很明显。

因为我必须将歌曲开始的时间精确到毫秒才能让我的项目工作,所以延迟方法对我来说并不理想。有谁知道 SetSource() 方法有什么问题吗?

MediaElement 控件有一个 AutoPlay 属性,默认设置为 true(请参阅 documentation)。这意味着无论何时设置源,它都会在加载源后立即自动开始播放。为避免这种情况,只需将 AutoPlay 属性设置为 false:

mp3.AutoPlay = false;