如何绑定命令以双击DataGrid中的一行

|| 我已经开发了WPF UserControl,旨在用作选择列表,如下所示: 绑定到实体(例如,员工)的CollectionView的DataGrid DataGrid上方的文本框,可用于过滤DataGrid中显示的项目。 我想公开一个命令,该命令将在用户双击DataGrid中的一行时执行。然后,容器可以通过对DataGrid中的SelectedItem进行操作来对此做出反应。 到目前为止,我已尝试按以下方式处理双击:
<DataGrid IsReadOnly=\"True\">
    <DataGrid.InputBindings>
        <MouseBinding MouseAction=\"LeftDoubleClick\" Command=\"... />
    </DataGrid.InputBindings>
...
但是,当用户单击DataGrid标头时,双击事件仍然会触发。我希望能够对其进行限制,以便仅在双击DataGrid主体时才执行Command。有声明方式可以做到这一点吗? 更新 我只是想掌握WPF和MVVM,并真的在寻找有关如何实现这种低级可重用组件的指南。任何一般性建议也将不胜感激并接受。就目前而言,我假设我希望此UserControl: 公开一个依赖属性\“ SelectedItem \”绑定到DataGrid \的SelectedItem 公开一个RoutedEvent \“ ItemDoubleClick \”或当用户双击某行时触发的类似事件。 实现
ICommandSource
,然后从行双击事件处理程序中调用
CommandHelpers.ExecuteCommandSource(this)
。     
已邀请:
如果后面的代码不是问题:
<DataGrid.RowStyle>
    <Style TargetType=\"{x:Type DataGridRow}\">
        <EventSetter Event=\"Loaded\" Handler=\"Row_Loaded\"/>
    </Style>
</DataGrid.RowStyle>
private void Row_Loaded(object sender, RoutedEventArgs e)
{
    var row = sender as DataGridRow;
    row.InputBindings.Add(new MouseBinding(MyCommands.MyCommand,
            new MouseGesture() { MouseAction = MouseAction.LeftDoubleClick }));
}
    
您可以简单地将DataGrid放入Grid并在Grid中定义您的InputBindings。在canExecute-definition中,应该检查是否选择了一行。它也适用于KeyBinding,例如自定义Delete-Command。
<Grid>
        <Grid.InputBindings>
            <MouseBinding MouseAction=\"LeftDoubleClick\" Command=\"... />
        </Grid.InputBindings>
        <DataGrid IsReadOnly=\"True\">
        ...
</Grid>
    

要回复问题请先登录注册