C# 使用标签和滑块链接WPF上的媒体元素

C# 使用标签和滑块链接WPF上的媒体元素,c#,wpf,mediaelement,C#,Wpf,Mediaelement,我已将导入按钮与媒体元素链接,以便播放歌曲 // Create OpenFileDialog Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); // Set filter for file extension and default file extension dlg.DefaultExt = ".txt";

我已将导入按钮与媒体元素链接,以便播放歌曲

            // Create OpenFileDialog 
        Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();



        // Set filter for file extension and default file extension 
        dlg.DefaultExt = ".txt";
        dlg.Filter = "WAV Files (*.wav)|*.wav|MP3 Files (*.mp3)|*.mp3|MP4 Files (*.mp4)|*.mp4|WMA Files (*.wma)|*.wma|SWA (*.swa)|*.swa";


        // Display OpenFileDialog by calling ShowDialog method 
        Nullable<bool> result = dlg.ShowDialog();


        // Get the selected file name and display in a TextBox 
        if (result == true)
        {
            // Open document 
            meMedia1.Source = new Uri(dlg.FileName);
            meMedia1.Play();
            //txtFileLocation.Text = filename;
//创建OpenFileDialog
Microsoft.Win32.OpenFileDialog dlg=新的Microsoft.Win32.OpenFileDialog();
//为文件扩展名和默认文件扩展名设置筛选器
dlg.DefaultExt=“.txt”;
dlg.Filter=“WAV文件(*.WAV)|*.WAV | MP3文件(*.MP3)|*.MP4文件(*.MP4)|*.MP4 | WMA文件(*.WMA)|*.WMA | SWA(*.SWA)|*.SWA”;
//通过调用ShowDialog方法显示OpenFileDialog
可为空的结果=dlg.ShowDialog();
//获取所选文件名并显示在文本框中
如果(结果==真)
{
//打开文件
meMedia1.Source=新Uri(dlg.FileName);
meMedia1.Play();
//txtFileLocation.Text=文件名;
现在,声音播放,但我想做的是链接一个滑块,这样他们就可以跳过一些歌曲,还可以在滑块上方添加一个标签,这样它就可以读取歌曲的播放时间。这就是我的应用程序现在的样子,让你有一个想法

多谢各位


编辑:得到改变歌曲位置的搜索,但我仍然不能手动移动到歌曲的时间,例如,如果我跳过歌曲的中间,让歌曲结束我的滑块仍然在中间,我希望它在结尾。(取决于您对更新速度的偏好)将滑块同步到播放机的当前位置。该代码可能类似于:

// In the class members area
private DispatcherTimer _timer = null;

// In your constructor/loaded method
_timer = new DispatcherTimer();
_timer.Interval = TimeSpan.FromMilliseconds(500);
_timer.Tick += _timer_tick;

// Timer's tick method
void _timer_tick(object sender, EventArgs e)
{
  // Convert duration to an integer percentage based on current position of
  //   playback and update the slider control
  TimeSpan ts = meMedia1.NaturalDuration.TimeSpan;
  int percent = int( meMedia1.Position / ts.Seconds * 100 );
  mySliderControl.Value = percent;
}
请注意,这假设您有一个
滑块,其最小值为0,最大值为100。您可以将其增加到0-1000(并相应地更改数学)以获得更精细的粒度。这也不允许滑块将用户交互推回到播放器,但为您提供了一种实现相反效果的方法。您可以向滑块添加事件处理程序,以便当用户开始交互时,此
\u timer
停止(
\u timer.Stop()
)因此,对媒体位置的更新停止更新滑块,而是开始执行滑块->媒体位置更新。然后,当用户松开滑块时,将
\u定时器
重新打开(
\u timer.start()