using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Windows.Threading; namespace VideoPlayer { public partial class Page : UserControl { private DispatcherTimer timer; private bool IsVideoScrubberLocked { get; set; } private double unmutedVolume; public Page() { InitializeComponent(); btnPlayPause.Checked +=new RoutedEventHandler(btnPlayPause_Checked); btnPlayPause.Unchecked += new RoutedEventHandler(btnPlayPause_Unchecked); VideoElement.CurrentStateChanged += new RoutedEventHandler(VideoElement_CurrentStateChanged); VideoElement.MediaOpened += new RoutedEventHandler(VideoElement_MediaOpened); timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(50); timer.Tick += new EventHandler(timer_Tick); sliderScrubber.MouseLeftButtonUp += new MouseButtonEventHandler(sliderScrubber_MouseLeftButtonUp); sliderScrubber.MouseLeftButtonDown += new MouseButtonEventHandler(sliderScrubber_MouseLeftButtonDown); sliderVolume.ValueChanged += new RoutedPropertyChangedEventHandler(sliderVolume_ValueChanged); btnMute.Checked += new RoutedEventHandler(btnMute_Checked); btnMute.Unchecked += new RoutedEventHandler(btnMute_Unchecked); } void btnMute_Unchecked(object sender, RoutedEventArgs e) { VideoElement.Volume = unmutedVolume; btnMute.Content = "Mute"; } void btnMute_Checked(object sender, RoutedEventArgs e) { unmutedVolume = VideoElement.Volume; VideoElement.Volume = 0; btnMute.Content = "UnMute"; } void VideoElement_MediaOpened(object sender, RoutedEventArgs e) { sliderVolume.Value = VideoElement.Volume; } void sliderVolume_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { VideoElement.Volume = sliderVolume.Value; } void sliderScrubber_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { IsVideoScrubberLocked = true; } void sliderScrubber_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { IsVideoScrubberLocked = false; VideoElement.Position = TimeSpan.FromMilliseconds( VideoElement.NaturalDuration.TimeSpan.TotalMilliseconds * sliderScrubber.Value); } void timer_Tick(object sender, EventArgs e) { if (VideoElement.NaturalDuration.TimeSpan.TotalSeconds > 0 && !IsVideoScrubberLocked) { txtVideoPosition.Text = string.Format("{0:00}:{1:00}", VideoElement.Position.Minutes, VideoElement.Position.Seconds); sliderScrubber.Value = VideoElement.Position.TotalSeconds / VideoElement.NaturalDuration.TimeSpan.TotalSeconds; } } void VideoElement_CurrentStateChanged(object sender, RoutedEventArgs e) { if (VideoElement.CurrentState == MediaElementState.Playing) { timer.Start(); } else { timer.Stop(); } } void btnPlayPause_Unchecked(object sender, RoutedEventArgs e) { VideoElement.Play(); btnPlayPause.Content = "Pause"; } private void btnPlayPause_Checked(object sender, RoutedEventArgs e) { VideoElement.Pause(); btnPlayPause.Content = "Play"; } } }