我正在WPF中构建音乐播放器,我将为当前播放的轨道添加一个轨迹栏,并且我将使用调度程序计时器在轨迹栏的左侧添加运行时长
0:45 ---------- | ---------------------------- 3:13
我希望左侧的时间根据用户向左或向右拖动到轨迹栏中的时间而改变。
检查iTunes。
谁能帮我?谢谢!
假设您正在使用MediaPlayer
元素,则可以使用该MediaPlayer.Position
属性来通知您其当前的播放位置。您将需要使用DispatcherTimer
来更新属性,该属性是绑定到显示当前播放位置的UI元素的数据。为了使它起作用,您还需要将Slider.Maximum
属性设置为正确的值。这是一个基本示例:
在后面的代码中:
private void InitialiseMediaPlayer()
{
mediaPlayer = new MediaPlayer();
mediaPlayer.MediaOpened += MediaPlayer_MediaOpened;
mediaPlayer.Open(new Uri(SomeFilePath, UriKind.Absolute));
}
private void MediaPlayer_MediaOpened(object sender, EventArgs e)
{
if (mediaPlayer.NaturalDuration.HasTimeSpan)
{
SliderMaximum = mediaPlayer.NaturalDuration.TimeSpan.TotalSeconds;
mediaPlayerTimer = new DispatcherTimer();
mediaPlayerTimer.Interval = TimeSpan.FromMilliseconds(1000);
mediaPlayerTimer.Tick += MediaPlayerTimer_Tick;
mediaPlayerTimer.Start();
mediaPlayer.Play();
}
}
private void MediaPlayerTimer_Tick(object sender, EventArgs e)
{
Position = mediaPlayer.Position.TotalSeconds;
Time = mediaPlayer.Position;
}
在XAML中:
<Slider Grid.Column="1" Value="{Binding Position, FallbackValue=0}" Maximum="{Binding
SliderMaximum, FallbackValue=0, Mode=OneWay}" Minimum="0" Margin="5,0"
VerticalAlignment="Center" />
<TextBlock Grid.Column="2" Text="{Binding Time, StringFormat={}{0:hh}:{0:mm}:{0:ss},
FallbackValue=00:00:00, Mode=OneWay}" VerticalAlignment="Center" />
您可能还需要Position
将以下行添加到属性设置器中:
mediaPlayer.Position = TimeSpan.FromSeconds(position);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句