Hi:
Here's my test code, which works fine:
<MediaElement AutoPlay="False" MediaOpened="PlayMedia_MediaOpened" CurrentStateChanged="PlayMedia_CurrentStateChanged" x:Name="PlayMedia" Width="400" Height="300" Source="Bear.wmv"></MediaElement>
<Slider MouseLeftButtonDown="MediaSlider_MouseLeftButtonDown" MouseLeftButtonUp="MediaSlider_MouseLeftButtonUp" x:Name="MediaSlider" Width="400" Height="50"></Slider>
<Button Click="Button_Click"></Button>
private DispatcherTimer timer = new DispatcherTimer();
public Page()
{
InitializeComponent();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = TimeSpan.FromMilliseconds(100);
}
private void timer_Tick(object sender, EventArgs e)
{
MediaSlider.Value = PlayMedia.Position.TotalSeconds;
}
private void PlayMedia_CurrentStateChanged(object sender, RoutedEventArgs e)
{
if (PlayMedia.CurrentState == MediaElementState.Playing)
{
timer.Start();
}
else
{
timer.Stop();
}
}
private void PlayMedia_MediaOpened(object sender, RoutedEventArgs e)
{
MediaSlider.Maximum = PlayMedia.NaturalDuration.TimeSpan.TotalSeconds;
MediaSlider.Value = 0;
}
private bool changedByUser;
private void MediaSlider_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
changedByUser = true;
timer.Stop();
}
private void MediaSlider_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (changedByUser)
{
PlayMedia.Position = TimeSpan.FromSeconds(MediaSlider.Value);
PlayMedia.Play();
timer.Start();
changedByUser = false;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.PlayMedia.Play();
}
Regards
Sincerely,
Allen Chen
Microsoft Online Community Support
Please remember to mark the replies as answers if they help and unmark them if they provide no help.