2010-02-12 2 views
3

MediaElent의 노래를 track1.mp3에서 track2.mp3으로 변경하고 싶습니다. 코드는 다음과 같습니다.MediaElement (SILVERLIGHT)의 소스 변경

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

MediaElement는 소스를 변경하지만 시작되지 않습니다. 이 코드가 잘못되었을 수 있습니까?

답변

5

소스가 변경되면 MyMediaElement.AutoPlay를 true로 설정해보십시오. uri가 아닌 stream을 취하는 MediaElement.SetSource() 메서드를 사용하여 조사 할 수도 있습니다.

+0

작동! 고마워요! – Krika

+0

왜, 어떻게 작동하는지 잘 모르겠지만 작동하는 것 같습니다. 감사! –

1

아무런 잘못한 것으로 보이지 않습니다. 다음은 내가 시도 할 수있는 몇 가지 진단 방법입니다. -

초기 파일로 track2를 지정하면 작동합니까?

MediaFailed 이벤트에 연결하면 해고됩니까?

CurrentState 속성에 TextBlock을 바인딩하여 CurrentState가 변경된 방법을 관찰합니다.

+0

답장을 보내 주셔서 감사합니다. MediaFailed 이벤트가 발생하지 않습니다. 그리고 CurrentState 속성을 확인하고 추적을 변경하려고 할 때 "Closed"라고 표시됩니다. 닫히셨습니까? 그게 무슨 뜻 이죠? 근원은 정확하다. – Krika

+0

@ krika02 : MediaElement는 현재 미디어가 없다고 생각합니다. 당신이 명확하게 설정했기 때문에 조금 이상합니다. 처음에 특정 track2는 실제로 그것을 관리합니까? – AnthonyWJones

2

나는 동일한 문제가있었습니다. XAML에서 자동 실행 및 소스를 설정할 수는 있지만 작동시킬 수는 있지만 코드에서 소스를 변경하면 아무 것도 수행하지 않습니다.
컨트롤의 MediaOpened 이벤트를 캡처했습니다.
문제는 소스를 변경 한 직후 Play()에 도달하여 현재 상태가 닫히는 것입니다. 상태를 변경하려면 몇 클록주기가 걸립니다. 그래서, 만약 당신이 플레이(); 해당 이벤트 핸들러 내에서 작동합니다.

0

AutoPlayfalse으로 설정하고 MediaOpened 처리기에서 Play()을 설정합니다. 사람들은 해결책으로 여기에 암시하지만 정확하지는 않습니다. 어떤 이유로 미디어가 열리지 않는 경우 (파일 등을 찾을 수없는 경우)를 대비해서 MediaFailed 이벤트를 처리 할 수도 있습니다.