c# – 在datagrid上双击问题

我在C#代码中的数据网格上有以下内容:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
</DataGrid.InputBindings>  

除非用户首先选择行(单击)然后尝试双击该行,否则它大部分都有效.在这种情况下,CmdTransUnitFillerRowDblClick代码永远不会被触发进行处理.

那么,当行已被选中时,如何在双击时正确触发CmdTransUnitFillerRowDblClick?
有人可能会问:

private void ExecutecmdTransUnitFillerRowDblClick(object parameter)  
{
    if (DgTransUnitFillerSelectedItem != null)
        TransUnitFillerDoubleClick(DgTransUnitFillerSelectedItem.CollectionRowId);
}

最佳答案 请参阅
my answer to another related question.问题是数据网格在用户选择行(或实际上是单元格)之后不再具有焦点;用户在数据网格中单击的单元格.因此,您必须将焦点更改回datagrid以允许此操作.

更改:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
</DataGrid.InputBindings>

至:

<DataGrid.InputBindings>  
    <MouseBinding Gesture="LeftDoubleClick" Command="{Binding CmdTransUnitFillerRowDblClick}" />  
    <MouseBinding Gesture="LeftClick" Command="{Binding CmdTransUnitFillerRowClick}" />  
</DataGrid.InputBindings>

…并添加:

private void ExecutecmdTransUnitFillerRowClick(object parameter)  
{
    if (DgTransUnitFillerSelectedItem != null)
        The_Name_Of_Your_DataGrid.Focus();
}
点赞