我有这样的滑块:
<Slider Minimum="0" Maximum="100"
TickFrequency="1"
IsMoveToPointEnabled="True"
IsSnapToTickEnabled="False"/>
我想做下一个行为:当 MouseDown 发生在滑块的任何点时,Thumb 不仅会移动一次到该点,而且还会跟随光标直到 MouseUp 发生。
抱歉,如果已经问过了,我找不到那个问题。
仅当您拖动滑块拇指本身时才会发生此行为,这是设计使然。
但是,这里有一些代码可以做到这一点;-)
挂钩到 XAML 中的 MouseMove 事件:
<Slider MouseMove="Slider_OnMouseMove" IsMoveToPointEnabled="True"/>
然后插入这段代码:
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;
}
}
笔记 :
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;
}
}