2011-09-07 8 views
5

これは簡単な質問ですが、答えが見つかりません。 XAMLを使用して、私はこのコードを持っている:(ソースタイプを変換することはできません "ソースタイプ 'System.Nullable <bool>'をターゲットタイプ 'bool'に変換する方法

res.IsInheriting = tbIsInheriting.IsChecked; 

をが、これは間違いです:

<CheckBox Grid.Column="2" Grid.Row="3" Height="23" HorizontalAlignment="Left" Name="tbIsInheriting" VerticalAlignment="Top" Width="191" Margin="0,4,0,0" /> 

ので、私は、このチェックボックスの値を取得する必要があり.csファイルに: ので、私は持っていますSystem.Nullable 'をターゲットタイプ' bool 'に変更します)。

+2

これは、チェックボックスが「不確定」状態の場合に実行する操作によって異なります。 – Jon

答えて

15
tblsInheriting.IsChecked.GetValueOrDefault(); 
3
if (tbIsInheriting.IsChecked.HasValue == true) 
    res.IsInheriting = tbIsInheriting.IsChecked.Value; 
9

CheckBox.IsCheckedそれは3ウェイのチェックボックスできるためbool?を返します。あなたのチェックボックスが決して 3ウェイであるならば、私は個人的に使用します。

あなたのチェックボックスは、あなたがそれを期待せずに3ウェイなり、不確定な状態になった何とか場合に例外をスローします
res.IsInheriting = tblsInheriting.IsChecked.Value; 

そうでない場合は、かどうかは 3ウェイは、私が使用する可能性があります:

defaultValueはおそらくあなたが翻訳される「不確定」状態にする方法に応じて trueまたは falseだろう
res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue; 

+0

'??'は確かに行く方法です。もう一つのオプションは 'Nullable 'の拡張メソッドを書くことです。 –

関連する問題