RelayCommand抛出InvalidCastException

时间:2016-05-17 18:16:05

标签: c# wpf mvvm-light

使用MVVM Light的当前版本(版本5.2.0),当使用Nullable<int>(或int?)时,我遇到一个异常,即调用Convert.ChangeType内部MVVM Light RelayCommandGeneric作为参数。

问题
当有时绑定绑定到空值而有时绑定到整数时,如何使用Nullable<int>作为RelayCommand的命令参数?绑定到不可为空的整数时,我没有看到问题。

背景
我在CodePlex(issue 7588)的问题跟踪器中发现了类似的故事,该故事表明它已在2012年得到解决。另外值得注意的是,有一个pull request试图解决该问题 - 但似乎请求未合并。

1 个答案:

答案 0 :(得分:0)

不是真正的答案,但此问题的解决方法是使用Nullable<int>作为通用参数类型而不是使用int,而在XAML绑定中提供{{1一个哨兵值。然后在执行操作/中可以执行对sentinel值的操作检查。

在XAML中:

TargetNullValue

然后在视图模型中:

<Button Command="MyCommand" 
        CommandParameter="{Binding PathToNullableInt, TargetNullValue=0}" 
        Content="Do Something"/>