c# - Null To Boolean IValueConverter 不工作

标签 c# wpf null ivalueconverter

如何使用 IValueConverter 将空值转换为 bool 值?

我正在使用 wpf 来尝试显示一堆 bool 值(在复选框中)。创建新记录时,这些值为空,并在复选框中显示为“不确定”。我希望空值出现并保存为“假”值。

我尝试创建一个 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;
  }
}

我试图让 Converter 使用的复选框之一:

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

我不知道问题是因为我的代码错误,还是 Converter 认为什么都没有改变,因此不需要 ConvertBack。我已经尝试了所有的 Mode 并在 Convert with ConvertBack 中切换了代码,但似乎没有任何效果。

有人可以指出我需要做什么来解决这个问题吗?

最佳答案

嗯,如果开箱即用,为什么要使用转换器?

<CheckBox IsChecked="{Binding VarianceDescriptionProvided, TargetNullValue=False}" />

更多信息请查看here .

关于c# - Null To Boolean IValueConverter 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357234/

相关文章:

c# - 在 session 中存储自定义对象

c# - ASP WebAPI 可以有可选的 RoutePrefix 吗?

wpf - WPF 的 ComponentOne : Text seems to render in the incorrect position?

c++ - 空引用 - C++ 标准中的位置

java - 如何将 arrayList 大小设置为 null?

c# - VS2008中.net 2.0的扩展方法

c# - 如何在C#中运行具有所需权限的bat文件

c# - 使用Prism 4的完整示例应用程序

wpf - 更改 WPF DatePicker 的字符串格式

android - 使用微调器时如何从 TextView 中获取文本