簡體   English   中英

DataGrid ScrollViewer無法正常工作

[英]DataGrid ScrollViewer not working

無法使用鍵盤箭頭鍵在DataGrid滾動數據。 ScrollViewer_KeyDown事件在使用Grid時工作正常,但在與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;
}

這有效:

<Grid FocusManager.FocusedElement="{Binding ElementName=MyScrollViewer}">
    <ScrollViewer x:Name="MyScrollViewer" VerticalScrollBarVisibility="Auto">            
        <DataGrid ItemsSource="{Binding MyCollection}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
        </DataGrid>
    </ScrollViewer>
</Grid>

無需處理任何事件。 關鍵是通過設置FocusManager.FocusedElement來確保scrollviewer具有焦點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM