Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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#_.net_Wpf_Xaml_Prism - Fatal编程技术网

C# 为什么添加双击命令会禁用我的datagrid?

C# 为什么添加双击命令会禁用我的datagrid?,c#,.net,wpf,xaml,prism,C#,.net,Wpf,Xaml,Prism,我有这个XAML代码: <DataGrid> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <prism:InvokeCommandAction Command="{Binding AddedSelectedClaimsCommand}" TriggerParameterPath="AddedItems" /> <

我有这个XAML代码:

<DataGrid>
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
      <prism:InvokeCommandAction Command="{Binding AddedSelectedClaimsCommand}" TriggerParameterPath="AddedItems" />
      <prism:InvokeCommandAction Command="{Binding RemovedSelectedClaimsCommand}" TriggerParameterPath="RemovedItems" />                                
    </i:EventTrigger>
    <i:EventTrigger EventName="MouseDoubleClick">
      <prism:InvokeCommandAction Command="{Binding ViewDetailsCommand}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
  <DataGrid.ContextMenu>
    <ContextMenu >
      <MenuItem Header="View details" Command="{Binding ViewDetailsCommand}"/>
    </ContextMenu>
  </DataGrid.ContextMenu>
</DataGrid>


它在没有MouseDoubleClick事件触发器的情况下工作正常。但当我添加双击功能时,数据网格突然变灰,无法再选择行。为什么?

由于某些原因,您的canExecuteMethod代理必须返回false,请查看您的ViewModel并确保以下所有内容都已为您准备好:

在命令初始化中,确保设置canExecuteMethod委托以及命令操作:

ViewDetailsCommand = new DelegateCommand(ExecuteViewDetailsCommand, 
    CanExecuteViewDetailsCommand);
然后执行逻辑,验证是否满足执行此命令的前提条件。最后,它将启用或禁用此命令的相关控件

private bool CanExecuteViewDetailsCommand() {       
    return null != SelectedDetail;
}
如果命令成功通过了前提条件测试,则可以安全地执行其方法:

private void ExecuteViewDetailsCommand()
{    
    NavigateTo("DetailView",SelectedDetail);
}
您也应该选择了详细属性(读/写):

注意:在上述RaiseCanExecuteEvents方法调用中,这是一种方便的方法,您可以在其中强制执行相关命令验证:

protected virtual void RaiseCanExecuteEvents()
{
    ViewDetailsCommand.RaiseCanExecuteChanged();
}

ViewDetailsCommand定义和初始化看起来像什么?
protected virtual void RaiseCanExecuteEvents()
{
    ViewDetailsCommand.RaiseCanExecuteChanged();
}