如何使WPF Slider Thumb从任何点跟随光标

我有这样的滑块:

 

我想做下一个行为:当MouseDown在滑块的任何一点出现时,Thumb不仅会移动一次到该点,而且还会跟随光标直到MouseUp发生。

对不起,如果已经问过,我找不到那个问题。

当您拖动滑块拇指本身时,才会发生此行为。

但是 ,这里有一些代码可以做到;-)

挂钩到XAML中的MouseMove事件:

  

然后插入此代码:

 private void Slider_OnMouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { var slider = (Slider)sender; Point position = e.GetPosition(slider); double d = 1.0d / slider.ActualWidth * position.X; var p = slider.Maximum * d; slider.Value = p; } } 

注意 :

  • 如果它们不同,您可能需要考虑滑块的边距和填充,我没有。
  • 这是在水平滑块上完成的。
  • 我的滑块的最小值为0,如果最小值为负,请务必调整计算。
  • 最后,它似乎只在IsMoveToPointEnabled设置时才有效。

Aybe的解决方案在thumb_MouseMove事件中效果更好。

 void timelineThumb_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { var thumb = sender as Thumb; Point pos = e.GetPosition(uiVideoPlayerTimelineSlider); double d = 1.0d / uiVideoPlayerTimelineSlider.ActualWidth * pos.X; uiVideoPlayerTimelineSlider.Value = uiVideoPlayerTimelineSlider.Maximum * d; } }