2013-08-09 2 views
0

У меня есть приложение, которое я переношу с Windows Phone -> Приложение для Windows 8 Store. Я играю музыку через свой App.Xaml.vb (чтобы он мог играть по всему моему приложению и контролироваться через CurrentApp). Все это прекрасно работает по телефону. Когда музыкальный трек заканчивается, событие MediaEnded запускается, и мое приложение выбирает другой трек и воспроизводит его. В Windows 8, когда заканчивается первый трек, приложение отключается.MediaElement.MediaEnded событие не работает

В Windows 8 событие MediaElement.MediaEnded не срабатывает.

Я настроил свой медиа-элемент и добавить обработчик:

Public WithEvents MusicElement as New MediaElement 
[...then in the constructor...] 
AddHandler MusicElement.MediaEnded, AddressOf ChangeTrack 

играет музыка (с использованием метода PlayMusic, который я не думаю, что мне нужно опубликовать), но когда музыка заканчивается ISN события Уволен.

Разница между версией телефона и версией Windows 8 заключается в том, что я не могу поместить элемент управления MediaElement в XAML в Win8 по какой-либо причине - он, похоже, не разрешен, поэтому я инициализирую его в своем коде за.

Я не использую тип медиафайла «фоновый звук» (который, как я слышал, может вызвать проблемы с событием MediaEnded).

Я подтвердил, что обработчик добавлен до начала воспроизведения.

Любые идеи?

Edit: XAML (попытка) код в app.xaml:

<Application.Resources> 
    <ResourceDictionary> 


     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Common/StandardStyles.xaml"/> 
      <ResourceDictionary Source="DetectiveStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
     <!--<MediaElement x:Name="MusicElement" x:Key="MusicElement" Source="/Sounds/Music/doing-my-best.mp3" AutoPlay="False"/>--> 
    </ResourceDictionary> 
</Application.Resources> 

ответ

4

Ваш MediaElement подключили к визуальному дереву? Если нет, обработчики событий обычно не будут вызваны.

Кроме того, возможно, что MediaElement определен в Xaml в Win8, если вы добавите фрагмент Xaml, который не работает, должно быть возможно выяснить, что там не так.

+0

Я добавил код XAML, когда пытался его ввести. Я предполагаю, что проблема заключается в том, что я пытаюсь реализовать mediaelement в App.XAML (я хочу иметь доступ к нему из любого места приложения). В Windows Phone я добавил его, как указано выше, в ресурсы, и он отлично работает. В Windows 8 он не позволит мне помещать медиаэлемент в ресурсы App.Xaml (поэтому код комментируется - я не могу скомпилировать его). – pumpkinszwan

+0

У меня была такая же проблема, и я могу подтвердить, что пока звук воспроизводится при запуске в ViewModel, событие действительно не срабатывает. Размещение его в представлении XAML устраняет проблему + принудительно создает шаблон MVVM, поэтому беспроигрышный :-) –

Смежные вопросы