2012-11-12 98 views

回答

2

如果您有使用媒體和控制播放,暫停和停止媒體文件的多個屏幕,那麼最好爲這些事件編寫一次代碼,然後從不同的屏幕使用它。我看到有人在他們使用媒體的每個屏幕上都寫下了以下代碼。

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模式,你可以找到在http://code.msdn.microsoft.com/windowsapps/Background-Audio-c-Metro-d2fc7719/view/SourceCode

樣本所以設計是在一個普通的地方編寫代碼,並從前端UI中發佈它們。

1

您需要使用MediaElement。

+1

不確定爲什麼,但你的答案簡潔逗樂我。 +1! –

+1

那麼,對於「任何幫助或建議是有幫助的」部分,答案都是正確和充分的。我沒有時間寫一篇完整的教程,我幾乎可以肯定,我已經早些時候爲類似的問題做了一些工作,但是基於SFO所展示的有限研究 - 可能足以讓他們指向正確的方向。 –

3

在XAML,具有以下屬性

<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> 

在應用欄,你將有一個MediaElement的,你可以有媒體控制按鈕有些像

<Page.BottomAppBar> 
    <AppBar Opened="BottomAppBar_Opened" Background="#FF3C3838" x:Name="BottomAppBarColors" Padding="10,0,10,0" AutomationProperties.Name="Bottom App Bar Colors"> 
     <Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="50*"/> 
       <ColumnDefinition Width="50*"/> 
      </Grid.ColumnDefinitions> 
      <StackPanel x:Name="LFullScreenLandscapeViewGrid" Orientation="Horizontal" Grid.Column="0" HorizontalAlignment="Left"> 
       <Button x:Name="Play" Click="PlayButton_Click" Style="{StaticResource PlayAppBarButtonStyle}" Tag="Play"/> 
       <Button x:Name="Stop" Click="StopButton_Click" Style="{StaticResource StopAppBarButtonStyle}" Tag="Stop"/> 
      </StackPanel> 
      <StackPanel Visibility="Collapsed" x:Name="PortraitViewGrid" Orientation="Horizontal" Grid.ColumnSpan="2" HorizontalAlignment="Right"> 
       <Button x:Name="PauseCollapsed" Click="PauseButton_Click" Style="{StaticResource PauseAppBarButtonStyle}" Tag="Pause"/> 
       <Button x:Name="PlayCollapsed" Click="PlayButton_Click" Style="{StaticResource PlayAppBarButtonStyle}" Tag="Play"/> 
       <Button x:Name="StopCollapsed" Click="StopButton_Click" Style="{StaticResource StopAppBarButtonStyle}" Tag="Stop"/> 
      </StackPanel> 
     </Grid> 
    </AppBar> 
</Page.BottomAppBar> 

在.CS碼文件,您可以控制mediaelement對象。

 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; 
    } 
相關問題