Невозможно прокручивать данные в DataGrid
с помощью клавиш со стрелками. ScrollViewer_KeyDown
событие работает нормально при использовании с Grid
, но не получает вызов при использовании с datagrid по умолчанию ScrollViewer
.DataGrid ScrollViewer не работает
<DataGrid.Resources>
<Style TargetType="ScrollViewer">
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
<EventSetter Event="KeyDown" Handler="ScrollViewer_KeyDown"></EventSetter>
</Style>
</DataGrid.Resources>
Код
private void ScrollViewer_KeyDown(object sender, KeyEventArgs e)
{
if (e.Handled) return;
var temporaryEventArgs =
new KeyEventArgs(e.KeyboardDevice, e.InputSource, e.Timestamp, e.Key)
{
RoutedEvent = e.RoutedEvent
};
// This line avoids it from resulting in a stackoverflowexception
if (sender is ScrollViewer) return;
((ScrollViewer)sender).RaiseEvent(temporaryEventArgs);
e.Handled = temporaryEventArgs.Handled;
}
Используйте событие 'PreviewKeyDown'. Я считаю, что DataGrid обрабатывает событие KeyDown для изменения выбора строк (если была нажата стрелка вверх/вниз). – Domysee
Спасибо, но не работает. –
Выполнен ли ваш обработчик? Вы пытались установить в нем точку останова? – Domysee