スライダーには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();
}
}
OnPreviewMouseUp /ダウンオーバーライドがマウスをキャプチャし、私はVLCを試してみましたが、あなたが望んでいた場合は、それらを削除できるようそれがマウスをキャプチャしません。マウスをキャプチャすると、スクロールバーの動作と同様にコントロールからマウスを離しても値が変更されます。
おそらく、VLCスライダーとその動作のリンクを提供することができますか? – RBarryYoung
@RBarryYoung:[VLC](http://www.videolan.org/) –
ここで助けを求めているのははっきりしない。特定のプログラミングに関する質問がありますか? –