スライダを使用してビデオの位置を制御する必要があります(別の場合はドキュメントページ)。しかし、問題は、スライダーの値がユーザーによって変更されたかどうか(クリック、サムドラッグ...)、またはバインディングから判断する方法がわかりません。バインダーからではなく、UIからスライダー値が更新されたときにのみ、何らかのイベントを発生させることは可能ですか?WPFスライダ - 値がUIから変更されたときに通知
私は、カスタムスライダーを実装しました:
public class NotifyingSlider : Slider
{
public static readonly DependencyProperty ValueChangedFromUIProperty =
DependencyProperty.Register("ValueChangedFromUI", typeof(ICommand), typeof(NotifyingSlider));
public ICommand ValueChangedFromUI
{
get
{
return (ICommand)GetValue(ValueChangedFromUIProperty);
}
set
{
SetValue(ValueChangedFromUIProperty, value);
}
}
protected override void OnThumbDragCompleted(DragCompletedEventArgs e)
{
base.OnThumbDragCompleted(e);
ValueChangedFromUI?.Execute(null);
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonUp(e);
ValueChangedFromUI?.Execute(null);
}
}
しかしValueChangedFromUI
コマンドは、ユーザが特定の位置に親指をドラッグするか、正確に目盛りの位置にバーをクリックしたときにのみ実行されます。ユーザーが2つのティックの間をクリックすると(値/サムが近くに移動する)、コマンドは実行されません - これは私の主な問題です。