我有这样的滑块:
<Slider Minimum="0" Maximum="100"
TickFrequency="1"
IsMoveToPointEnabled="True"
IsSnapToTickEnabled="False"/>
我希望实现以下操作:当鼠标在滑块的任意位置按下时,拇指不仅应该移动到该位置,而且还应该跟随光标移动,直到鼠标弹起。
如果这个问题已经被问过了,那么很抱歉,我没有找到相关的问题。
这种行为只会在你拖动滑块本身时发生,这是设计上的问题。
然而,这里有一些代码可以做到这一点 ;-)
在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;
}
}
注意:
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;
}
}