在DataGrid,当行已被选中,如果你想通过拖动来选择连续的行不会在以下情况下工作。
问题是关注的焦点。而选择实际上是在该行,请记住,每个小区是一个可视对象和可focus
ed。 DataGrid
具有基于其电池目前有焦点时更改选择在幕后处理;为你在做什么,有什么不对,当你想使用多选鼠标拖动时除外。所以,你必须从单击的单元格中删除焦点的第一个单元格被点击和DataGrid
的选择发生了变化之后。什么工作对我来说是改变聚焦到DataGrid
本身。
在XAML:
<DataGrid x:Name="DataGridTopics" Grid.Row="0" Grid.Column="1" AutoGenerateColumns="False" SelectionChanged="datagridTopic_SelectionChanged" IsReadOnly="True" VerticalAlignment="Top" MouseLeftButtonDown="DataGridTopics_MouseLeftButtonDown" CurrentCellChanged="DataGrid_CurrentCellChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Topics" CanUserSort="False" CanUserResize="False" CanUserReorder="False" Width="*" Binding="{Binding Text}" />
</DataGrid.Columns>
</DataGrid>
后面的代码:
private void DataGrid_CurrentCellChanged(object sender, EventArgs e)
{
var dg = (DataGrid)sender;
dg.Focus();
}
重点围绕CurrentCellChanged你失去键盘箭头行动(甚至更多)
该解决方案保持键盘:
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{
DataGrid.Focus();
base.OnPreviewMouseLeftButtonDown(e);
}