我在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();
}