取消选中时,我的复选框返回NULL

时间:2011-07-07 17:05:40

标签: wpf binding

我的XAML文件中有以下代码,复选框非常简单。选中该复选框后,它将我的属性设置为true。但是,当我取消选中该复选框时,在使用convertBack函数中的断点进行调试时,我可以看到该值为null。我甚至试图设置IsThreeState = false,但仍然无法正常工作。谁知道为什么?

<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
}

2 个答案:

答案 0 :(得分:7)

这只是因为TargetNullValue=false上有Binding。这意味着false媒体资源中CheckBoxValue的值将转换为null,这是您的转换器所看到的。

答案 1 :(得分:0)

即使CheckBox不是三态,IsChecked也常常为null。要么绑一个布尔?并使用(foo == true)来避免null,或绑定到bool并使用从bool转换的转换器?通过将null视为false来实现bool。