【发布时间】:2018-06-05 01:26:43
【问题描述】:
默认情况下,如果您先输入一些文本然后再次清除它,WPF TextBox 绑定会将字符串属性设置为空字符串。我理解这种选择的逻辑,但这意味着数据库可以同时包含 NULL 和这些字段的空字符串值。
在检索和使用这些值时,始终检查NULL 和空字符串是一种很好的做法,但我想从核心解决问题。
有几种解决方案:WPFConverters,在业务层将空字符串转换为NULL或者使用TargetNullValue:
<TextBox Text="{Binding Value, TargetNullValue=''}"/>
不幸的是,这些解决方案需要针对单个属性和TextBoxes 实施。
有没有办法让所有TextBoxes 将空字符串转换为NULL 值?
【问题讨论】:
-
您可以编写自己的自定义绑定扩展并将其用于您的
TextBoxes。请查看this article 了解更多信息。 -
您还可以创建一个从
TextBox派生的自定义TextBox控件并覆盖Text属性,该属性将在string.IsNullOrEmpty 返回true 时返回null。 -
在你的 app.xaml 中试试这个:stackoverflow.com/a/15567948/8507673
-
@XAMlMAX:谢谢你的建议。然而,这两种解决方案都需要重构所有现有的
TextBoxes,并且所有未来的开发都必须使用新语法。我希望有一个可以像@sTrenat 建议的那样在全球范围内应用的解决方案,但是TextBox.Text属性不能与null 进行比较。它总是一个字符串或空字符串。