RelayCommand <bool>抛出无效的强制转换异常</bool>

时间:2015-04-07 17:00:29

标签: c# wpf mvvm-light relaycommand

我正在尝试参数化RelayCommand但是我得到了一个运行时强制转换异常。

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

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){...}

当我点击文件菜单时,GalaSoft会抛出

  

InvalidCastException(“指定的演员表无效”)

当我从所有内容中删除参数时,工作正常。

我是否必须采取措施才能将“假”强制转换为布尔?

2 个答案:

答案 0 :(得分:3)

Type Converter必须将其转换为字符串而不是bool。

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

尝试以上方法。您必须在XAML中使用以下名称空间。

xmlns:x="clr-namespace:System;assembly=mscorlib"

答案 1 :(得分:1)

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

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

在主VM中你将拥有

public bool IsTask{get;set;}