首页 / 软件开发 / Silverlight / Silverlight:MediaElement状态
Silverlight:MediaElement状态2011-09-05 msdn 可以通过使用 CurrentState 属性检测 MediaElement 状态,通过使用 CurrentStateChanged 事件检测状态更改。本概述包括了这些 API 的用法,并提 供了有关不同 MediaElement 状态间的转换的信息。MediaElementMediaElement 的当前状态(Buffering、Closed、Error、Opening、Paused、 Playing 或 Stopped)会影响到使用媒体的用户。例如,如果某用户正在尝试查 看一个大型视频,则 MediaElement 将可能长时间保持在 Buffering 状态。在这 种情况下,您可能希望用户界面 (UI) 中提供某种还不能播放媒体的提示。当缓 冲完成时,您可能希望指示现在可以播放媒体。使用 CurrentState 和 CurrentStateChanged下面的示例演示一种方法,以显示 MediaElement 的 CurrentState。它创建 一个 MediaElement 和若干按钮,以便控制媒体播放。为了显示 MediaElement 的当前状态,本示例注册 CurrentStateChanged 事件并且使用某一事件处理程序 来更新 TextBlock。XAML<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<MediaElement CurrentStateChanged="Media_State_Changed"
x:Name="media" Source="xbox.wmv" Width="300" Height="300"
Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3" />
<!-- Stops media playback.-->
<Button Click="StopMedia"
Grid.Column="0" Grid.Row="1" Content="Stop" />
<!-- Pauses media playback. -->
<Button Click="PauseMedia"
Grid.Column="1" Grid.Row="1" Content="Pause" />
<!-- Begins media playback. -->
<Button Click="PlayMedia"
Grid.Column="2" Grid.Row="1" Content="Play" />
<TextBlock
Grid.Column="0" Grid.Row="2" Margin="10"
FontSize="12">CurrentState:</TextBlock>
<TextBlock
x:Name="mediaStateTextBlock"
Grid.Column="1" Grid.Row="2" Margin="0,10,0,0"
FontSize="12"></TextBlock>
</Grid>
VBPrivate Sub StopMedia(ByVal sender As Object, ByVal e As RoutedEventArgs)
media.Stop()
End Sub
Private Sub PauseMedia(ByVal sender As Object, ByVal e As RoutedEventArgs)
media.Pause()
End Sub
Private Sub PlayMedia(ByVal sender As Object, ByVal e As RoutedEventArgs)
media.Play()
End Sub
Private Sub Media_State_Changed(ByVal sender As Object, ByVal e As EventArgs)
mediaStateTextBlock.Text = media.CurrentState.ToString
End Sub
C#private void StopMedia(object sender, RoutedEventArgs e)
{
media.Stop();
}
private void PauseMedia(object sender, RoutedEventArgs e)
{
media.Pause();
}
private void PlayMedia(object sender, RoutedEventArgs e)
{
media.Play();
}
private void Media_State_Changed(object sender, EventArgs e)
{
mediaStateTextBlock.Text = media.CurrentState.ToString();
}