Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双击将同一命令绑定到datagrid_C#_Wpf - Fatal编程技术网

C# 双击将同一命令绑定到datagrid

C# 双击将同一命令绑定到datagrid,c#,wpf,C#,Wpf,我有一个菜单项,配置为使用绑定执行命令: <MenuItem Margin="2" Header="Process something" Command="{Binding SomethingCommand}" IsEnabled="{Binding SomethingIsEnabled}"> </MenuItem> 它还可以配置此项目是否已启用 现在,我需要在用户双击datagrid中的一行时执行相同的命令,并且仅当“Someth

我有一个菜单项,配置为使用绑定执行命令:

<MenuItem Margin="2" 
     Header="Process something"
     Command="{Binding SomethingCommand}" 
     IsEnabled="{Binding SomethingIsEnabled}">
</MenuItem>

它还可以配置此项目是否已启用

现在,我需要在用户双击datagrid中的一行时执行相同的命令,并且仅当“SomethingisEnabled”为true时才执行

如何配置datagrid来实现这一点?

设置xmlns:i=”http://schemas.microsoft.com/expression/2010/interactivity“在xaml中


这将调用relaycommand something命令,并在双击的网格上传递所选项目(如果有,否则为空)。

设置xmlns:i=”http://schemas.microsoft.com/expression/2010/interactivity“在xaml中



这将调用relaycommand something命令,并在双击的网格上传递所选项目(如果有,否则为空)。

为什么要有一个单独的
somethingsenabled
属性?为什么不让
SomethingCommand.CanExecute
确定该命令是否可用?如果
CanExecute
返回false,那么
MenuItem
将被自动禁用。我不知道这一点。我试试看。但是,datagrid呢?为什么要有一个单独的
SomethingEnabled
属性?为什么不让
SomethingCommand.CanExecute
确定该命令是否可用?如果
CanExecute
返回false,那么
MenuItem
将被自动禁用。我不知道这一点。我试试看。但是,datagrid呢?System.Windows.Interactivity,我使用mvvm light(galasoft),它可能会自动将其添加到我的项目中。您可以通过nuget.System.Windows.Interactivity获得它,我使用mvvm light(galasoft),它可能会自动将它添加到我的项目中。你可以通过nuget获得它。
<DataGrid x:Name="dataGrid" ItemsSource="{Binding DataList}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="MouseDoubleClick">
                    <i:InvokeCommandAction Command="{Binding SomethingCommand}" CommandParameter="{Binding ElementName=dataGrid, Path=SelectedItem}"></i:InvokeCommandAction>
                </i:EventTrigger>
            </i:Interaction.Triggers>
</DataGrid>