3

メディア要素で再生中のビデオ ファイルがあります。私はそれを再生し続ける必要があるので、試しました:

me.play();
me.MediaEnded += new RoutedEventHandler(me_MediaEnded);

このイベント メソッドでは:

//loop to keep video playing continuously
void me_MediaEnded(object sender, EventArgs e)
{
    //play video again
    me.Play();
}

ただし、上記はビデオファイルを再生しません。なんで?私は何を間違えましたか?

4

4 に答える 4

2

また、ストーリーボードを使用して、イベントをフックしたり、コード ビハインド作業を行ったりすることなく、ビデオを制御およびループすることもできます。これは MSDN で推奨されているソリューションであり、MVVM 設計のためのより洗練された適切なソリューションです。

MSDN の詳細については、こちらを参照してください。例が含まれています。

http://msdn.microsoft.com/en-us/library/ms741866%28v=vs.100%29.aspx

于 2014-01-24T00:54:23.710 に答える
2

私はこれで動作するようになりました:

class MyMediaPlayer : MediaPlayer
{
    private bool looping;

    public MyMediaPlayer() : base()
    {
        looping = false;  
        base.MediaEnded += new EventHandler(mediaEnded);
    }

    public MyMediaPlayer(string _file) : base()
    {
        looping = false;
        base.Open(new Uri(_file, UriKind.Relative));
        base.MediaEnded += new EventHandler(mediaEnded);
    }   

    public bool Looping
    {
        get { return looping;}
        set { looping = value; }
    }

    public void playLooping()
    {
        looping = true;
        base.Play();
    }

    public void playLooping(string _file)
    {
        looping = true;
        base.Open(new Uri(_file, UriKind.Relative));
        base.Play();
    }

    public void play()
    {
        looping = false;
        base.Play();
    }

    public void play(string _file)
    {
        looping = false;
        base.Open(new Uri(_file, UriKind.Relative));
        base.Play();
    }

    public void stop()
    {
        looping = false;
        base.Stop();
    }

    private void mediaEnded(object sender, EventArgs e)
    {
        if(looping)
        {
            base.Position = new TimeSpan(0, 0, 0);
            base.Play();
        }
    }

}

これがあなたの質問に答えることを願っています。

于 2015-04-10T02:10:56.917 に答える