2011-07-07 7 views
5

XAMLファイルに次のコードがあり、非常に単純なチェックボックスがあります。チェックボックスをオンにすると、myプロパティがtrueに設定されます。ただし、チェックボックスをオフにすると、convertBack関数のブレークポイントでデバッグするときに値がnullであることがわかりました。私はIsThreeState = falseを設定しようとしましたが、まだ動作しません。なぜ誰も知っていますか?チェックボックスをオフにすると、チェックボックスにNULLが返されます。

<Window.Resources> 
    <this:DebugValueConverter x:Key="debugConverter"/> 
</Window.Resources> 
<StackPanel> 
<CheckBox Content="Testing" IsThreeState="False" 
          IsChecked="{Binding CheckBoxValue, 
             Converter={StaticResource debugConverter}, 
             FallbackValue=false,TargetNullValue=false}" 
         /> 
</StackPanel> 

CheckBoxValueは、ビューモデルのboolプロパティです。

コンバータクラスは次のとおりです。 パブリッククラスDebugValueConverter:IValueConverter { #region IValueConverterメンバー

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value; 
    } 

    #endregion 
} 
+0

プロパティが 'bool'の場合は' null 'に設定されますか?あなたのコードをすべて投稿してください。 –

+0

あなたの 'CheckBoxValue'コードを投稿してください。 –

答えて

7

あなたのBindingにはTargetNullValue=falseが含まれているからです。つまり、CheckBoxValueのプロパティのfalseの値は、コンバータの表示内容であるnullに変換されます。

+1

ありがとうございます、それはTargetNullValue = falseを削除した後に動作します。 – seekle

0

にisCheckedはあなたのチェックボックスが3つの状態でない場合であっても、多くの場合はnullです。いずれかのブールにバインドする? nullを避けるには(foo == true)、またはboolにバインドしてboolから変換するコンバータを使用しますか?ヌルをfalseとして扱うことでブールする。

+1

以下は、Microsoftのドキュメントのスニペットであり、私は2つの状態のみを持つことができることを明確に述べています: "CheckBoxコントロールはチェック状態と未チェック状態の他に3番目の状態を持つことができます。 true IsCheckedプロパティをnull(不確定)に設定することができます。 " – seekle

+0

Yup。それがドキュメントです。あなたが発見しているように、それは正確ではありません。 –

関連する問題