我正在使用滑块来控制正在播放的 MediaElement 的位置。我已经实现了 ValueChanged 事件来同步滑块的位置和值。因此,当我拖动 Thumb 时,MediaElement 的位置也会发生变化。然而,这会造成糟糕的用户体验。理想的情况应该是这样的,用户完成滑动后,MediaElement 跳转到最终位置。所以我正在寻找像 AfterSliding 这样的事件/处理程序。
我见过使用 OnThumbDragCompleted 等解决方案。但是,这些问题是关于 WPF 的,我在 UWP 中找不到此类问题。有人有解决方法吗?
当前的:
private void ProgressBar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
MediaPlayer.Position = TimeSpan.FromSeconds(e.NewValue);
LeftTimeTextBlock.Text = MusicDurationConverter.ToTime((int)e.NewValue);
}
Run Code Online (Sandbox Code Playgroud)
预期的:
private void ProgressBar_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
if (!isDragging || slidingFinished) MediaPlayer.Position = TimeSpan.FromSeconds(e.NewValue);
LeftTimeTextBlock.Text = MusicDurationConverter.ToTime((int)e.NewValue);
}
Run Code Online (Sandbox Code Playgroud)
- -更新 - -
我有一个每秒滴答一次的计时器,但是当我点击滑块(而不是拇指)区域时,点击的事件并不总是被触发,因此拇指会在点击的位置和新位置之间来回移动。我该如何解决这个问题,以便当用户仍然握住拇指时,它保持在单击的位置?我想点击的事件可能不是我应该使用的。
public void Tick()
{
if (ShouldUpdate && !SliderClicked)
{
MediaSlider.Value = MediaControl.Player.PlaybackSession.Position.TotalSeconds;
}
SliderClicked = false;
}
private void MediaSlider_Tapped(object sender, TappedRoutedEventArgs e) …Run Code Online (Sandbox Code Playgroud)