Проблема в том, что ScrollViewer
уже обрабатывает событие MouseLeftButtonDown
внутри, например:
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
if (base.Focus())
e.Handled = true;
base.OnMouseLeftButtonDown(e);
}
Вы можете «исправить» это с помощью пользовательского класса, например так:
public class MyScrollViewer : ScrollViewer {
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) {
base.OnMouseLeftButtonDown(e);
e.Handled = false;
}
}
СТОРОННОЕ ПРИМЕЧАНИЕ: вы должны использовать x:Name
в XAML, а не Name
. В противном случае вы можете столкнуться с ошибками компиляции, используя приведенный выше класс.
Кроме того, вы можете прикрепить свой обработчик ко всем MouseLeftButtonDown
событиям, включая обработанные. Так что вместо:
this.scroll_viewer.MouseLeftButtonDown += new MouseButtonEventHandler(scroll_viewer_MouseLeftButtonDown);
Вы бы использовали:
this.scroll_viewer.AddHandler(ScrollViewer.MouseLeftButtonDownEvent, new MouseButtonEventHandler(this.scroll_viewer_MouseLeftButtonDown), true);