Binding a progressbar to a mediaelement in wpf

后端 未结 5 1569
深忆病人
深忆病人 2020-12-29 13:24

In c#/wpf I added a progressbar and mediaelement to my window. The idea was that progressbar is displaying how much is been played in the mediaelement.

I tried it wi

5条回答
  •  鱼传尺愫
    2020-12-29 13:40

    That is because Media is not opened and hence the progress bar is not aware of the maximum value. Try this...

    Use the following events for MediaOpened, and MouseLeftButtonUp for your progress bar or slider. I tried it, and it works just fine.

    public partial class AudioPage : Page
    {
        TimeSpan _position;
        DispatcherTimer _timer = new DispatcherTimer();
    
        public AudioPage()
        {
            InitializeComponent();
            _timer.Interval = TimeSpan.FromMilliseconds(1000);
            _timer.Tick += new EventHandler(ticktock);
            _timer.Start();
        }
    
        void ticktock(object sender, EventArgs e)
        {
            sliderSeek.Value = media.Position.TotalSeconds;
        }
    
        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }
    
        private void Play_Click(object sender, RoutedEventArgs e)
        {
            media.Play();
        }
    
        private void Pause_Click(object sender, RoutedEventArgs e)
        {
            media.Pause();
        }
    
        private void Stop_Click(object sender, RoutedEventArgs e)
        {
            media.Stop();
        }
    
        private void media_MediaOpened(object sender, RoutedEventArgs e)
        {
            _position = media.NaturalDuration.TimeSpan;
            sliderSeek.Minimum = 0;
            sliderSeek.Maximum = _position.TotalSeconds;
        }
    
        private void sliderSeek_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            int pos = Convert.ToInt32(sliderSeek.Value);
            media.Position = new TimeSpan(0, 0, 0, pos, 0);
        }
    }
    

    The associate XAMl is as follows...

    
        
            
            
        
        
        
            
            
            
        
        
            
            
            
        
        
            

提交回复
热议问题