Ich muss die Position des Videos (und auch in einem anderen Fall Dokumentseite) mit einem Schieberegler steuern. Aber das Problem ist, dass ich nicht weiß, wie ich entscheiden soll, ob ein Slider-Wert vom Benutzer geändert wurde (Klick, Daumen ziehen ...), oder ob er von der Bindung stammt. Es ist möglich, ein Ereignis nur auszulösen, wenn der Schiebereglerwert von der Benutzeroberfläche aus aktualisiert wird und nicht vom Binding?WPF Slider - Benachrichtigen, wenn der Wert von UI geändert wurde
Ich habe einen benutzerdefinierten Schieber implementiert:
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);
}
}
Aber ValueChangedFromUI
Befehl nur dann ausgeführt wird, wenn der Benutzer per Drag ein Daumen auf die spezifische Position oder klicken Sie auf Balken genau auf die Position der Zecke. Wenn der Benutzer zwischen zwei Häkchen klickt (also Wert/Daumen zum nächsthöheren bewegt wird), wird der Befehl nicht ausgeführt - das ist ein Hauptproblem für mich.