Изменить источник в MediaElement (SILVERLIGHT) - PullRequest
3 голосов
/ 12 февраля 2010

Я хотел бы изменить песню на моем MediaElent с track1.mp3 на track2.mp3. И вот код:

MyMediaElement.Stop();
Uri u = new Uri("track2.mp3", UriKind.Relative);
MyMediaElement.Source=u;
MyMediaElement.Play();

MediaElement меняет источник, но не запускается. Что может быть не так с этим кодом?

Ответы [ 4 ]

5 голосов
/ 16 февраля 2010

Попробуйте установить для MyMediaElement.AutoPlay значение true, как только источник изменится, он начнет воспроизводиться. Вы также можете исследовать, используя метод MediaElement.SetSource (), который принимает поток, а не URI.

2 голосов
/ 25 февраля 2010

У меня была такая же проблема. Я мог бы установить autoplay и источник в XAML, и он работал бы, но если бы я изменил источник в коде, он бы ничего не делал. Я захватил событие MediaOpened элемента управления.
Проблема в том, что он нажимает Play () сразу после того, как вы изменили источник, поэтому текущее состояние закрыто. Для изменения состояния требуется несколько тактов. Итак, если вы поставите Play (); внутри этого обработчика событий он будет работать.

1 голос
/ 12 февраля 2010

Вы, кажется, не делаете ничего плохого. Вот пара диагностик, которые я бы попробовал: -

Укажите track2 в качестве исходного файла, который работает?

Прикрепить к событию MediaFailed, это срабатывает?

Свяжите TextBlock со свойством CurrentState, чтобы увидеть, как изменился CurrentState.

0 голосов
/ 13 августа 2011

Вы устанавливаете AutoPlay на false, а затем в обработчике MediaOpened вы делаете Play(). Люди вроде намекают на решение здесь, но не очень точно. Вы также можете обработать событие MediaFailed на случай, если по какой-либо причине не удается открыть носитель (не удается найти файл и т. Д.).

...