Я использую MediaElement и (Time) Slider для воспроизведения и управления воспроизведением видео.
Я использовал ответ 2 на этот вопрос в качестве основы.
В дополнение к возможности перетаскивания я бы также хотел, чтобы большой палец ползунка перемещался в точку щелчка мышью.
Это работает нормально, когда MediaElement и (Time) Slider приостановлены, но при воспроизведении видео щелчок мыши не действует
Вот мой код
1010 * XAML *:
<MediaElement Source="..."
Name="mediaView"
Height="450" LoadedBehavior="Manual" UnloadedBehavior="Stop" Stretch="UniformToFill"
MediaOpened="OnMediaOpened" MediaEnded="OnMediaEnded" MediaFailed="OnMediaFailed" Grid.Row="0" Grid.Column="0"/>
<Grid Name="mediaBar" VerticalAlignment="Bottom" Margin="5,10,5,0" Background="#B2282828" Grid.Row="0" Grid.Column="0">
<!-- ... -->
<Slider Name="timeSlider" Margin="5,5,5,0"
Thumb.DragStarted="OnDragStarted" Thumb.DragCompleted="OnDragCompleted" ValueChanged="OnTimeSliderValueChanged"
PreviewMouseLeftButtonUp="OnMouseLeftButtonUp" IsMoveToPointEnabled="True"
MinWidth="200" FlowDirection="LeftToRight"
Grid.Column="4" Cursor="ScrollWE" VerticalAlignment="Center"/>
<!-- ... -->
</Grid>
соответствующая часть c # :
private void OnDragStarted(object sender, DragStartedEventArgs args)
{
isDragging = true;
ticks.Stop();
}
private void OnDragCompleted(object sender, DragCompletedEventArgs args)
{
isDragging = false;
int SliderValue = (int)timeSlider.Value;
TimeSpan ts = new TimeSpan(0, 0, 0, 0, SliderValue);
mediaView.Position = ts;
if(currentStatus == Status.PLAYING)
ticks.Start();
}
private void OnMouseLeftButtonUp(object sender, EventArgs ea)
{
if(!isDragging)
{
mediaView.Pause();
ticks.Stop();
int SliderValue = (int)timeSlider.Value; // when video is playing this not the point of the mouse click
// ...
}
}
Я понимаю, что timeSlider.Value
отображает текущую точку во времени вместо позиции щелчка мыши во время воспроизведения видео.
Есть ли другой способ измерить положение щелчка мышью и обновить значение ползунка этим?
Или лучшее решение для ситуации «щелчок мышью во время работы слайдера»?