MediaPlayer.HasAudio 属性 returns 空

MediaPlayer.HasAudio property returns null

我正在尝试播放尚未播放的音频。

我在 class 中使用了这个方法:

private MediaPlayer mediaPlayer;

public bool HasAudio(){
  return mediaPlayer.HasAudio; // this returns null and it says property is readonly
}

Sound game = new Sound();
if (game.HasAudio() == false)//play sound

如何获得真值或假值?

编辑: Sound class structure, Class instance

我想我明白这是怎么回事了。

在这里,您要实例化 Sound,然后对其调用 HasAudio。此时,它试图访问它的 m_mediaPlayer 字段,但它是空的,因为您只是在 Play 方法中实例化它。正如我在旁注评论中建议的那样,您需要首先在构造函数或字段声明中实例化 MediaPlayer

internal class Sound
{
    public bool HasAudio { get { return mediaPlayer.HasAudio; } }

    private MediaPlayer mediaPlayer = new MediaPlayer();

    public void Play(string fileName)
    {
        mediaPlayer.Open(new Uri(@"sounds/" + fileName, UriKind.RelativeOrAbsoute));
        mediaPlayer.Play();
    }

    public void Stop()
    {
        mediaPlayer.Stop();
    }
}