2016-05-17 57 views
-3

使用MVVM Light的當前版本(版本5.2.0)時,在使用Nullable<int>(或int?)作爲參數時,遇到從MVVM Light RelayCommandGeneric內部調用Convert.ChangeType的異常。RelayCommand引發InvalidCastException

問題
如何使用一個Nullable<int>作爲RelayCommand命令參數時,有時會綁定綁定到一個空值,有時爲一個整數?綁定到不可爲空的整數時,我沒有看到問題。

背景
我發現在CodePlex上的問題跟蹤一個類似的故事(issue 7588),它說,它是在2012年另外值得注意的是解決了,有一個pull request試圖解決這個問題 - 但它似乎該請求未被合併。

+0

兩降投票和零個意見,沒有一個良好的開端對這個問題... –

回答

-1

不是一個真正的答案,但這個問題的解決方法是,而不是使用Nullable<int>是隻使用一個int作爲泛型參數類型,並在XAML結合提供了一個哨兵值的TargetNullValue。然後在執行動作/可以執行操作檢查標記值。

在XAML:

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

然後在視圖模型:

public RelayCommand<int> MyCommand = new RelayCommand<int>((i) => 
{ 
    if (i != 0) 
    { 
     DoSomething(i); 
    } 
});