Я пишу приложение для Windows Phone, которое подключается к текущему медиапроигрывателю (предположительно, Zune - не уверен, что что-нибудь еще может выполнить эту роль), чтобы извлечь текущего исполнителя и название песни для дополнительного использования. Когда приложение загружается в первый раз, у меня есть представление, которое показывает эту информацию, однако при смене треков оно не обновляется. Я пытался подключиться к событию MediaPlayer.ActiveSongChanged, но, похоже, оно никогда не срабатывает ни в выделенном фрагменте кода, ни в моей ViewModel (используя MVVM Light). Чтобы подтвердить это, я поместил MessageBox.Show в обработчики событий в обоих местах, и ни один из них не появился.
Вот пример кода:
public MainViewViewModel()
{
MediaPlayer.ActiveSongChanged += new EventHandler<EventArgs>(MediaPlayer_ActiveSongChanged);
FrameworkDispatcher.Update();
}
/// <summary>
/// Handles a song change so the view is updated.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void MediaPlayer_ActiveSongChanged(object sender, EventArgs e)
{
MessageBox.Show("song changed");
}
Я что-то здесь не так делаю? Обработка событий казалась довольно простой, поэтому я не уверен, что мне не хватает. Приведенный выше код (с / без FrameworkDispatcher.Update ()) был опробован как в выделенном коде, так и в виртуальной машине, и ни одна из них не работает.
Кроме того, есть ли способ проверить это без необходимости каждый раз развертывать на моем устройстве? Эмулятор, похоже, не обнаруживает, что Zune работает / играет в моей системе, поэтому я должен развертываться всякий раз, когда я пытаюсь что-то новое.
Любые предложения приветствуются!