C#MVVM选择行并运行命令
问题描述:
我有这种问题。 我通常通过左键或右键点击选择datagrid中的行。 但我需要在右键单击运行命令。 我使用此代码C#MVVM选择行并运行命令
<DataGrid.InputBindings> <MouseBinding Command="{Binding ShowDWClickOnRightButton}" MouseAction="RightClick" CommandParameter="{Binding ElementName=myDataGrid, Path=SelectedItem}"/> </DataGrid.InputBindings>
但这不工作,因为在命令参数我有空(无选择项)。你能给我一些建议如何解决这个问题吗?
谢谢
答
不能使用SelectedItem
因为单击鼠标右键时没有设置。
-
调用一些方法从您的视图模型直接从代码隐藏有相应的行对象: 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);
}
}
- 设置命令在
ItemTemplate
想在这个answer
+0
我尝试检查,但是在没有代码的情况下寻找解决方案。 – MarekJ
我写了一个行为,选择项上单击鼠标右键。这是一个TreeView,但我认为你可以调整它为一个GridView。看看:https://*.com/a/43118460/7713750 – Rekshino
我试着检查你的解决方案...我需要选择和运行命令选定的行。所以希望这是可能的。 – MarekJ