C# 为什么添加双击命令会禁用我的datagrid?
我有这个XAML代码: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" /> <
<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();
}