Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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# RelayCommand<;布尔>;引发无效的强制转换异常_C#_Wpf_Mvvm Light_Relaycommand - Fatal编程技术网

C# RelayCommand<;布尔>;引发无效的强制转换异常

C# RelayCommand<;布尔>;引发无效的强制转换异常,c#,wpf,mvvm-light,relaycommand,C#,Wpf,Mvvm Light,Relaycommand,我正在尝试参数化RelayCommand,但遇到运行时强制转换异常 以下是相关的xaml和视图模型行: XAML <MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="false" /> 视图模型 public RelayCommand<bool> SaveProjectAsRelayCommand { get;

我正在尝试参数化RelayCommand,但遇到运行时强制转换异常

以下是相关的xaml和视图模型行:

XAML

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="false" />

视图模型

public RelayCommand<bool> SaveProjectAsRelayCommand { get; set; }

SaveProjectAsRelayCommand = new RelayCommand<bool>(SaveProjectAs, ProjectTaskCanExecute);

private void SaveProjectAs(bool b){...}
private bool ProjectTaskCanExecute(bool b){...}
public RelayCommand SaveProjectAsRelayCommand{get;set;}
SaveProjectAsRelayCommand=新的RelayCommand(SaveProjectAs、ProjectTaskCanExecute);
私有void SaveProjectAs(bool b){…}
私有布尔项目任务可执行(布尔b){…}
当我单击“文件”菜单时,GalaSoft会抛出一个

InvalidCastException(“指定的强制转换无效”)

当我从所有内容中删除参数时,效果很好


我必须做些什么才能将“false”转换为bool吗?

类型转换器必须将其转换为字符串而不是bool

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" >
 <MenuItem.CommandParameter>
      <x:Boolean>False<x:Boolean>
 </MenuItem.CommandParameter>
</MenuItem>

类型转换器必须将其转换为字符串而不是布尔值

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" >
 <MenuItem.CommandParameter>
      <x:Boolean>False<x:Boolean>
 </MenuItem.CommandParameter>
</MenuItem>

或者,您可以在绑定到的“main”中创建一个属性

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="{Binding Main.IsTask}" />

或者,您可以在绑定到的“main”中创建一个属性

<MenuItem Header="Save Project As" Command="{Binding Main.SaveProjectAsRelayCommand}" CommandParameter="{Binding Main.IsTask}" />

感谢快速响应Adil。工作得非常好。感谢快速响应Adil。工作得非常好。感谢添加它。因为只有两个UI命令会受到此状态的影响(bool=“includeExtras”),视图模型中的两个处理程序最终都会调用业务模型中的相同方法(使用此相同参数),我喜欢从一开始就将其作为调用参数进行处理。感谢您添加此参数。因为只有两个UI命令会受到此状态的影响(bool=“includeExtras”),并且视图模型中的两个处理程序最终都会调用业务模型中的同一方法(使用此参数),我喜欢从一开始就将其作为调用参数处理。