我正在制作一个音乐播放器,我需要创建一个搜索。现在我已经通过这种方式使用TrackBar在WinForms中完成了它:
Scroll
事件更改媒体位置。但是在WPF中,没有Scroll
事件,即使在代码中更改了值,ValueChanged
事件也会触发。因此,当我使用DispatcherTimer
更新滑块位置时,即使这样,也会触发ValueChanged
事件,从而更改媒体位置。因此,媒体无法正常播放。
所以我需要一个仅在用户更改Slider
的值时触发的事件。
我已经遇到this question,但它没有正确答案。
任何帮助将不胜感激。感谢您的期待。
答案 0 :(得分:1)
在ValueChanged
事件处理程序中,检查一些属性以查看用户交互。
IsFocused, IsMouseDirectlyOver, IsMouseOver, IsKeyboardFocused, IsKeyboardFocusWithin
答案 1 :(得分:0)
您可以这样做:首先,定义一个类变量:
private double newValue = 0;
然后,每当您想要更改代码中滑块的值时,首先存储新值:
newValue = <<whatever you need>>;
slider1.Value = newValue;
然后在您的事件处理程序中包含以下检查:
private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
if (e.NewValue != newValue)
{
newValue = e.NewValue;
// DO SOMETHING
}
}