Wpf 使用轨迹栏控制时间

Wpf 使用轨迹栏控制时间,wpf,timer,itunes,trackbar,Wpf,Timer,Itunes,Trackbar,我将在WPF中构建一个音乐播放器,我将为当前播放的曲目添加一个轨迹栏,我将使用调度计时器在轨迹栏的左侧添加一个运行持续时间 0:45---------3:13 我希望左边的时间根据用户是向左拖动还是向右拖动到轨迹栏而改变 查看iTunes 有人能帮我吗?谢谢 假设您使用的是MediaPlayer元素,则可以使用MediaPlayer.Position属性通知您其当前播放位置。您将需要使用Dispatcher来不断更新绑定到显示当前播放位置的UI元素的数据的属性。要使其工作,还需要将Slider.

我将在WPF中构建一个音乐播放器,我将为当前播放的曲目添加一个轨迹栏,我将使用调度计时器在轨迹栏的左侧添加一个运行持续时间

0:45---------3:13

我希望左边的时间根据用户是向左拖动还是向右拖动到轨迹栏而改变

查看iTunes


有人能帮我吗?谢谢

假设您使用的是MediaPlayer元素,则可以使用MediaPlayer.Position属性通知您其当前播放位置。您将需要使用Dispatcher来不断更新绑定到显示当前播放位置的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" />

你能帮我用iTunes做这个吗?
mediaPlayer.Position = TimeSpan.FromSeconds(position);