在WPF绑定中将值设置为空

mutmk8jj  于 2023-03-24  发布在  其他
关注(0)|答案(3)|浏览(223)

请看下面这行

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

上面的这个Price属性是Decimal?(可为空的十进制)。
我希望如果用户删除文本框的内容(即输入一个空字符串),它应该自动更新数据源(绑定的目标)与空(无VB)。
有什么想法我可以在XAML中做到这一点?

aiqt4smr

aiqt4smr1#

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

<TextBox Text="{Binding Price, TargetNullValue=''}"/>

这代表(感谢Gregor的评论):

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

sysmscorlibSystem导入的xml命名空间:

xmlns:sys="clr-namespace:System;assembly=mscorlib"

希望能有所帮助。

ycggw6v2

ycggw6v22#

这个值转换器应该可以做到这一点:

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

在resources中声明此转换器的示例:

<Window.Resources>
    <local:StringToNullableDecimalConverter x:Key="nullDecimalConv"/>
</Window.Resources>

并在绑定中使用它:

<TextBox Text="{Binding Price, Converter={StaticResource nullDecimalConv}}"/>

请注意,TargetNullValue在这里不合适:它用于定义当绑定的source为null时应该使用哪个值。这里Price不是源,它是源的一个属性...

bfrts1fy

bfrts1fy3#

您可以尝试使用值转换器(IValueConverter)http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx
在我的后脑勺,像这样:

public class DoubleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
        return (double)value;
    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, CultureInfo culture)
    {
    var doubleValue = Convert.ToDouble(value);

    return (doubleValue == 0 ? null : doubleValue);
    }
}

(可能需要一些调整虽然)

相关问题