Вы можете попытаться получить кнопки элемента управления через VisualTree
и прикрепить обработчик к их событиям щелчка.
Редактировать: я написал метод расширения для получения элементов визуального дерева через путь:
public static class ExtensionMethods
{
public static DependencyObject GetVisualChildFromTreePath(this DependencyObject dpo, int[] path)
{
if (path.Length == 0) return dpo;
List<int> newPath = new List<int>(path);
newPath.RemoveAt(0);
return VisualTreeHelper.GetChild(dpo, path[0]).GetVisualChildFromTreePath(newPath.ToArray());
}
}
Если ваш ScrollViewer
называется sv, вы можете получить такие кнопки:
RepeatButton button1 = sv.GetVisualChildFromTreePath(new int[] { 0, 2, 0, 0 }) as RepeatButton; //Up
RepeatButton button2 = sv.GetVisualChildFromTreePath(new int[] { 0, 2, 0, 2 }) as RepeatButton; //Down
RepeatButton button3 = sv.GetVisualChildFromTreePath(new int[] { 0, 3, 0, 0 }) as RepeatButton; //Left
RepeatButton button4 = sv.GetVisualChildFromTreePath(new int[] { 0, 3, 0, 2 }) as RepeatButton; //Right
Примечание. Кнопки существуют, только если активирована соответствующая полоса прокрутки.Вероятно, метод расширения можно улучшить с точки зрения производительности, используя другие типы данных.