![](/img/trans.png)
[英]DataGrid.ColumnWidth=“*” not working in a 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.