C#MVVM选择行并运行命令

问题描述:

我有这种问题。 我通常通过左键或右键点击选择datagrid中的行。 但我需要在右键单击运行命令。 我使用此代码C#MVVM选择行并运行命令

<DataGrid.InputBindings> <MouseBinding Command="{Binding ShowDWClickOnRightButton}" MouseAction="RightClick" CommandParameter="{Binding ElementName=myDataGrid, Path=SelectedItem}"/> </DataGrid.InputBindings>

但这不工作,因为在命令参数我有空(无选择项)。你能给我一些建议如何解决这个问题吗?

谢谢

+0

我写了一个行为,选择项上单击鼠标右键。这是一个TreeView,但我认为你可以调整它为一个GridView。看看:https://*.com/a/43118460/7713750 – Rekshino

+0

我试着检查你的解决方案...我需要选择和运行命令选定的行。所以希望这是可能的。 – MarekJ

不能使用SelectedItem因为单击鼠标右键时没有设置。

  1. 您可以设置selectedItem before right mouse button is pressed

  2. 调用一些方法从您的视图模型直接从代码隐藏有相应的行对象: WPF:

    < DataGrid Grid.Row="1" x:Name="myDataGrid" MouseRightButtonDown="myDataGrid_MouseRightButtonDown" ...

代码隐藏:

private void myDataGrid_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      if (e.OriginalSource == null) return; 
      var row = ItemsControl.ContainerFromElement((DataGrid)sender, e.OriginalSource as DependencyObject) as DataGridRow; 

      if (row != null) 
      { 
       (this.DataContext as ViewModel).SomeViewModelMethod(row.DataContext as YourRowClass); 
      } 
     } 
  1. 设置命令在ItemTemplate想在这个answer
开始=>
+0

我尝试检查,但是在没有代码的情况下寻找解决方案。 – MarekJ