我正在使用 MediaElement 对象和 SurfaceSlider 对象,我使用 SurfaceSlider 来控制视频位置,并且还希望 SurfaceSlider 显示视频的当前位置,就像 youtube 一样。
我使用这段代码来控制视频的位置,这个函数在 SurfaceSlider 对象的 ValueChanged 事件发生时被调用...
private void SeekToMediaPosition(object sender, RoutedPropertyChangedEventArgs<double> args)
{
int SliderValue = (int)mySurfaceSlider.Value;
TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);
myMediaElement.Position = ts;
}
我使用此代码显示视频的当前位置...
DispatcherTimer ticks = new DispatcherTimer();
private void Element_MediaOpened(object sender, EventArgs e)
{
mySurfaceSlider.Maximum = myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds;
ticks.Interval = TimeSpan.FromMilliseconds(1);
ticks.Tick += ticks_Tick;
ticks.Start();
myMediaElement.Play();
}
void ticks_Tick(object sender, object e)
{
mySurfaceSlider.Value = myMediaElement.Position.TotalMilliseconds;
}
问题是当 SurfaceSlider 值更改显示视频的当前位置时,也会调用 ValueChanged 事件,并且视频的位置发生更改,我猜会创建一个循环。
当用户更改 SurfaceSlider 值时,是否有任何其他事件要使用,或者有什么方法可以处理这个问题?
谢谢