在WPF绑定中将值设置为NULL?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

请看下面一行

<TextBox Text="{Binding Price}"/>

提问于
用户回答回答于

我使用的是.NET 3.5SP1,所以非常简单:

<TextBox Text="{Binding Price, TargetNullValue=''}"/>
<TextBox Text="{Binding Price, TargetNullValue={x:Static sys:String.Empty}}"/>

sys是导入的xml命名空间。Systemmscorlib:

xmlns:sys="clr-namespace:System;assembly=mscorlib"
用户回答回答于

这个值转换器应该能完成以下任务:

public class StringToNullableDecimalConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, 
        CultureInfo culture)
    {
        decimal? d = (decimal?)value;
        if (d.HasValue)
            return d.Value.ToString(culture);
        else
            return String.Empty;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        string s = (string)value;
        if (String.IsNullOrEmpty(s))
            return null;
        else
            return (decimal?)decimal.Parse(s, culture);
    }
}

在资源中声明此转换器的实例:

<Window.Resources>
    <local:StringToNullableDecimalConverter x:Key="nullDecimalConv"/>
</Window.Resources>
<TextBox Text="{Binding Price, Converter={StaticResource nullDecimalConv}}"/>

扫码关注云+社区