在鼠标拖动多选时,已经选择了行不正常

问题描述 投票:0回答:2

在DataGrid,当行已被选中,如果你想通过拖动来选择连续的行不会在以下情况下工作。

wpf datagrid
2个回答
1
投票

问题是关注的焦点。而选择实际上是在该行,请记住,每个小区是一个可视对象和可focused。 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();
}

0
投票

重点围绕CurrentCellChanged你失去键盘箭头行动(甚至更多)

该解决方案保持键盘:

protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e)
{   
    DataGrid.Focus();
    base.OnPreviewMouseLeftButtonDown(e);
}
© www.soinside.com 2019 - 2024. All rights reserved.