gpt4 book ai didi

wpf - 像 VLC 一样的音量 slider

转载 作者:行者123 更新时间:2023-12-04 18:13:08 26 4
gpt4 key购买 nike

我正在寻找看起来和行为就像 VLC 的 slider 的音量 slider 。
enter image description here

我发现以下关于如何设置 slider 样式的帖子:Volume Slider CustomControl
但我也想要同样的行为......

行为之间有什么区别:
当您单击 slider [在 WPF] 上并在 slider 区域上移动鼠标(同时按住鼠标按钮)时,它应该也将 slider 移动到鼠标在 slider 上的位置。

我找不到怎么做..也许我应该使用与 Slider 不同的东西?

谢谢您的帮助!

最佳答案

slider 上有一个名为 IsMoveToPointEnabled 的属性。将 slider 设置为正确的值,但仅当您单击它时,它不会在您拖动时更新。

要在拖动时更新,您必须在移动鼠标时自己更新值,方法 Track.ValueFromPoint为您提供正确的值,轨道是 slider 模板的一部分。

例子

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();
}
}

OnPreviewMouseUp/Down 覆盖捕获鼠标,我尝试了 VLC 并没有捕获鼠标,因此您可以根据需要删除它们。即使鼠标离开控件(类似于滚动条的工作方式),捕获鼠标也可以更改值。

关于wpf - 像 VLC 一样的音量 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8989854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com