2016-05-17 4 views
-3

現在のバージョン(バージョン5.2.0)のMVVM Lightを使用して、Nullable<int>(またはint?)をパラメータとして使用する場合、MVVM Light RelayCommandGenericの内部でConvert.ChangeTypeを呼び出すことから例外が発生します。RelayCommandがInvalidCastExceptionをスローする

質問
どのように私はヌル値に、時には整数にRelayCommandとき時々結合バインドするためのコマンドパラメータとしてNullable<int>を使用することができますか?私は、null値ではない整数にバインドする際に問題は見られません。

背景
私は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); 
    } 
}); 
関連する問題