我有这样的滑块:
<Slider Minimum="0" Maximum="100"
TickFrequency="1"
IsMoveToPointEnabled="True"
IsSnapToTickEnabled="False"/>
我想做下一个行为: 当MouseDown在滑块的任何位置出现时,Thumb不仅会移动一次到该点,而且还会跟随光标直到MouseUp发生。
对不起,如果已经问过,我找不到那个问题。
答案 0 :(得分:3)
当你拖动滑块拇指本身时,这种行为只会发生 ,这是设计的。
然而,这里有一些代码会执行此操作; - )
在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;
}
}
注意:
答案 1 :(得分:1)
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;
}
}