Ron*_*Ron 5 wpf slider custom-controls wpf-controls
我正在寻找体积滑块,其外观和行为就像VLC的滑块一样.

我发现以下帖子关于如何设置滑块样式:Volume Slider CustomControl
但我也想要相同的行为......
行为之间有什么区别:当您单击[在WPF上]滑块并在滑块区域上移动鼠标时(鼠标按钮仍处于保持状态),它应该将滑块移动到滑块上鼠标的位置.
我找不到怎么做..也许我应该使用与Slider不同的东西?
谢谢您的帮助!
Kri*_*is 7
滑块上有一个名为IsMoveToPointEnabled的属性,它将滑块设置为正确的值,但只有在单击它时才会在拖动时更新.
要在拖动时更新,您必须在移动鼠标时自行更新值,方法Track.ValueFromPoint会为您提供正确的值,该轨道是滑块模板的一部分.
例
public class DraggableSlider : Slider
{
public DraggableSlider()
{
this.IsMoveToPointEnabled = true;
}
private Track track;
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
track = Template.FindName("PART_Track", this) as Track;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if(e.LeftButton == MouseButtonState.Pressed && track != null)
{
Value = track.ValueFromPoint(e.GetPosition(track));
}
}
protected override void OnPreviewMouseDown(MouseButtonEventArgs e)
{
base.OnPreviewMouseDown(e);
((UIElement)e.OriginalSource).CaptureMouse();
}
protected override void OnPreviewMouseUp(MouseButtonEventArgs e)
{
base.OnPreviewMouseUp(e);
((UIElement)e.OriginalSource).ReleaseMouseCapture();
}
}
Run Code Online (Sandbox Code Playgroud)
OnPreviewMouseUp/Down覆盖捕获鼠标,我尝试了VLC并且没有捕获鼠标,因此您可以根据需要删除它们.捕获鼠标允许值更改,即使鼠标离开控件类似于滚动条的工作方式.
| 归档时间: |
|
| 查看次数: |
3967 次 |
| 最近记录: |