如何检查MediaElement是否已停止?

时间:2014-08-15 16:26:29

标签: c# xaml windows-phone-8 mediaelement

如果MediaElement目前停止或播放,我需要检查。 这是我的代码:

private void PlayAudioClick(object sender, RoutedEventArgs e)
{
    AudioPlayer.Play();
    StopAudio.Visibility = Visibility.Visible;
    PlayAudio.Visibility = Visibility.Collapsed;
    if (AudioPlayer.Stoped == true)
    {
        PlayAudio.Visibility = Visibility.Visible;
        StopAudio.Visibility = Visibility.Collapsed;
    }
}

我正在寻找像这样的伪代码:if(AudioPlayer.Stoped == true){//做某事}。

3 个答案:

答案 0 :(得分:6)

您可以使用MediaElement的{​​{1}}事件来检查媒体何时结束播放..

在XAML中

MediaEnded

在C#代码中

<MediaElement Name="media" MediaEnded="media_MediaEnded"  />

事件处理程序看起来像..

media.MediaEnded += media_MediaEnded;

另外,为了检测当前媒体状态,您有一个名为private void media_MediaEnded(object sender, RoutedEventArgs e) { // Do your stuff } 的枚举,您可以通过调用MediaElementState中的CurrentState属性来获取此信息。当放入开关时,您可以看到所有的状态。

MediaElement也有MediaElement事件..当MediaElement的状态发生变化时会触发此事件,您可以将其与CurrentState属性结合使用来检查媒体所处的状态。

在XAML中

CurrentStateChanged

或在C#中

CurrentStateChanged="media_CurrentStateChanged"

您可以使用它来检测媒体的当前状态。希望它有所帮助..

答案 1 :(得分:0)

添加

media.Position = TimeSpan.Zero;

到事件处理程序解决了问题。

答案 2 :(得分:0)

在Xamarin的MediaElement中找不到CurrentStateChanged。

另一种方法是附加PropertyChanged事件,然后检查更改:

videoPlayer.PropertyChanged += VideoPlayer_PropertyChanged;
private void VideoPlayer_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            switch (videoplayer.CurrentState)
            {
                case MediaElementState.Playing:
                    break;
                case MediaElementState.Stopped:
                    break;
            }
        }