StandardStyles.xaml に次のコードがあります。
<Style x:Key="RootFrameStyle" TargetType="Frame">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Frame">
<Grid>
<MediaElement x:Name="MediaPlayer" AudioCategory="BackgroundCapableMedia" />
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
App.Xaml.cs の OnLaunched の次のコード:
...
rootFrame.Style = Resources["RootFrameStyle"] as Style;
...
MainPage.xaml.cs コード:
PlayToManager playToManager = null;
CoreDispatcher dispatcher = null;
private void LayoutAwarePage_Loaded_1(object sender, RoutedEventArgs e)
{
if (App.Player == null)
{
var rootGrid = VisualTreeHelper.GetChild(Window.Current.Content, 0);
App.Player = (MediaElement)VisualTreeHelper.GetChild(rootGrid, 0);
App.Player.Source = new Uri("http://myserverlink.com/mymp3file.mp3");
App.Player.Play();
}
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
dispatcher = Window.Current.CoreWindow.Dispatcher;
playToManager = PlayToManager.GetForCurrentView();
playToManager.SourceRequested += playToManager_SourceRequested;
}
void playToManager_SourceRequested(PlayToManager sender, PlayToSourceRequestedEventArgs args)
{
var deferral = args.SourceRequest.GetDeferral();
var handler = dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
args.SourceRequest.SetSource(App.Player.PlayToSource);
deferral.Complete();
});
}
Windows 8 でデバイスをクリックすると、PlayTo no devices のデバイスのリストに表示されます。また、MainPage.xaml に MediaElement を追加する場合は、リスト内のデバイス。MediaElement の Style File が必要でしたが、別のページに移動してしまうと音楽の再生が止まりませんでした。何をすべきか?