如何使用 IValueConverter 将空值转换为布尔值?
我正在使用 wpf 尝试显示一堆布尔值(在复选框中)。创建新记录时,这些值为空,并在复选框中显示为“不确定”。我希望空值出现并保存为“假”值。
我试图创建一个 NullToBoolean 转换器,它从数据库中获取空值并将它们显示为 false,然后在用户点击保存时将它们保存为 false。(本质上,我试图避免用户必须在复选框中单击两次(一次使其为真,然后再次使其为假)。这似乎适用于导入 - 即空值显示为假 - 但除非我做了两次点击跳舞,保存时数据库中的值不会改变。
我的转换器:
[ValueConversion(typeof(bool), typeof(bool))]
public class NullBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return value;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return value;
}
return null;
}
}
我试图让转换器使用的复选框之一:
<CheckBox Grid.Column="1" Grid.Row="0" Padding="5" Margin="5" VerticalAlignment="Center" Name="chkVarianceDescriptionProvided" IsThreeState="False">
<CheckBox.IsChecked>
<Binding Path="VarianceDescriptionProvided" Mode="TwoWay">
<Binding.Converter>
<utils:NullBooleanConverter />
</Binding.Converter>
</Binding>
</CheckBox.IsChecked>
</CheckBox>
我不知道问题是因为我的代码错误,还是转换器认为没有任何改变,因此不需要ConvertBack
. 我已经尝试了Mode
使用 ConvertBack 进行转换的所有 s 和切换代码,但似乎没有任何效果。
有人可以指出我需要做些什么来解决这个问题吗?