我或多或少被DataGrid行为所震惊。我的应用程序有一些用于输入的TexBox,在Grid中组合,在Grid之外我有一个DataGrid来显示内容。 DataGrid样式如下:
<Style x:Key="SignalsTable" TargetType="{x:Type DataGrid}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="AutoGenerateColumns" Value="False"/>
<Setter Property="SelectionUnit" Value="FullRow"/>
<Setter Property="SelectionMode" Value="Extended"/>
<Setter Property="CanUserAddRows" Value="False"/>
<Setter Property="CanUserDeleteRows" Value="False"/>
<Setter Property="CanUserReorderColumns" Value="False"/>
<Setter Property="CanUserResizeColumns" Value="False"/>
<Setter Property="CanUserResizeRows" Value="False"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="VerticalScrollBarVisibility" Value="Auto"/>
</Style>
DataGrid的部分XAML:
<DataGrid x:Name="MT_Raster_SignalsTable"
ItemsSource="{Binding Source={StaticResource SignalsCollectionViewSource}}"
Margin="20,240,20,20"
Style="{StaticResource SignalsTable}"
KeyboardNavigation.DirectionalNavigation="None"
PreviewKeyUp="SignalTableKeyUp">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
,其余是列定义。
我无法使用箭头键进行“正常”导航(KeyboardNavigation.DirectionalNavigation =“Continue”有时会导致ArrowUp / Down时跳过表格,所以我设置了'KeyboardNavigation.DirectionalNavigation =“无“'并附上一个键盘处理程序来自己在SignalTableKeyUp()中做事。这适用于Home(到表的顶部)和End(到表的底部),但是ArrowUp / Down仍然有奇怪的行为:
有人知道这里发生了什么,或者有解决方案吗?
答案 0 :(得分:0)
好的,我尝试了一些东西,解决方案显然非常简单......现在我自己处理预览键进行我想要的选择更改,然后将事件设置为'Handled',这样就不会执行任何其他操作了按键:
private void SignalTableKeyDown(object sender, KeyEventArgs e)
{
// Do selection stuff in DataGrid.
// Prevent any other actions.
e.Handled = true;
}