Windows 8 在Windows8应用程序中后台播放音频文件?

Windows 8 在Windows8应用程序中后台播放音频文件?,windows-8,windows-runtime,winrt-xaml,Windows 8,Windows Runtime,Winrt Xaml,我正在开发一个应用程序,在后台显示信息的同时播放音频文件。这是一个Windows 8平板电脑应用程序。任何帮助或建议都是有益的 谢谢,您需要使用MediaElement。您需要使用MediaElement。在XAML中,您将拥有具有以下属性的MediaElement <ContentControl x:Name="Host"> <MediaElement Source="Assets/myMusic.mp3" IsLooping="True" Aut

我正在开发一个应用程序,在后台显示信息的同时播放音频文件。这是一个Windows 8平板电脑应用程序。任何帮助或建议都是有益的


谢谢,您需要使用MediaElement。

您需要使用MediaElement。

在XAML中,您将拥有具有以下属性的MediaElement

  <ContentControl x:Name="Host">
            <MediaElement Source="Assets/myMusic.mp3" IsLooping="True" AutoPlay="True" AudioCategory="BackgroundCapableMedia" PosterSource="/Images/placeholder-sdk.png" VerticalAlignment="Center" HorizontalAlignment="Center" Name="myMediaElement" Height="350" Width="640" />
  </ContentControl>

在XAML中,您将拥有一个具有以下属性的MediaElement

  <ContentControl x:Name="Host">
            <MediaElement Source="Assets/myMusic.mp3" IsLooping="True" AutoPlay="True" AudioCategory="BackgroundCapableMedia" PosterSource="/Images/placeholder-sdk.png" VerticalAlignment="Center" HorizontalAlignment="Center" Name="myMediaElement" Height="350" Width="640" />
  </ContentControl>

如果您有多个屏幕使用媒体和控件播放、暂停和停止媒体文件,那么最好为这些事件编写一次代码,然后从不同的屏幕使用。我看到人们在使用媒体的每个屏幕上都编写了以下代码

private void PauseButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Pause();
}

private void StopButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Stop();
}

private void ForwardButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = 2.0;
}

private void RewindButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = -1.0;
}
因此,与其在每个屏幕中重复代码,不如遵循一个好的事件模式来减少重复代码

最好是使用MVVM模式,您可以在


因此,设计是在一个公共位置编写代码,并从前端UI启动它们。

如果有多个屏幕使用媒体和控件播放、暂停和停止媒体文件,那么最好为这些事件编写一次代码,然后从不同的屏幕使用它。我看到人们在使用媒体的每个屏幕上都编写了以下代码

private void PauseButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Pause();
}

private void StopButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.Stop();
}

private void ForwardButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = 2.0;
}

private void RewindButton_Click(object sender, RoutedEventArgs e)
{
    myMediaElement.DefaultPlaybackRate = 0.0;
    myMediaElement.PlaybackRate = -1.0;
}
因此,与其在每个屏幕中重复代码,不如遵循一个好的事件模式来减少重复代码

最好是使用MVVM模式,您可以在


因此,我们的设计是在一个公共位置编写代码,然后从前端用户界面启动它们。

不确定原因,但您的简短回答让我很开心+1.答案是正确的,对于“任何帮助或建议都是有帮助的”这一部分来说已经足够了。我没有时间写一篇完整的教程,我几乎可以肯定我之前已经为一个类似的问题写过了,但是基于SFO的有限研究——这可能足以为他们指出正确的方向。我不确定为什么,但你的简短回答让我感到好笑+1.答案是正确的,对于“任何帮助或建议都是有帮助的”这一部分来说已经足够了。我没有时间写一篇完整的教程,我几乎可以肯定我之前已经为一个类似的问题写过了,但是基于SFO的有限研究——这可能足以为他们指出正确的方向。