可以为Nullable的数据库属性,但texbox在删除内容时仍显示红色边框

Tri*_*gen 3 validation wpf binding entity-framework-4

您好我将WPF文本框绑定到Entity Framework属性,如下所示:

<TextBox Grid.Column="1" Grid.Row="0" Margin="5,2" 
         Text="{Binding Path=MyEntityObject.SizeLower, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

它与属性绑定很好,当我更改它时,它会按预期保存到数据库.但是,如果我删除文本框的内容,我会得到它周围的红色错误边框.我没有任何验证器,所以我猜测texbox抱怨价值不可空.但实际上DB中的这个属性是可以为空的,所以我无法理解它为什么会出错.

系统生成的EF属性定义如下:

<EdmScalarPropertyAttribute(EntityKeyProperty:=false, IsNullable:=true)>
<DataMemberAttribute()>
Public Property SizeLower() As Nullable(Of Global.System.Int64)
    Get
        Return _SizeLower
    End Get
    Set
        OnSizeLowerChanging(value)
        ReportPropertyChanging("SizeLower")
        _SizeLower = StructuralObject.SetValidValue(value)
        ReportPropertyChanged("SizeLower")
        OnSizeLowerChanged()
    End Set
End Property

Private _SizeLower As Nullable(Of Global.System.Int64)
Run Code Online (Sandbox Code Playgroud)

有什么我想念的吗?我认为绑定系统能够确定属性是否可以为空并且如果允许则允许空值?

如何查看错误是什么?徘徊似乎没有做到这一点.

谢谢你的建议.

===================================附加信息

如果我选择全部并删除,然后更改焦点,则会出现验证框.这是前后的一个屏幕截图.此外,我已经确认我可以手动将NULL添加到数据库中以获取绑定属性,这样就不会出现问题.

拒绝.试图把图片放在这里,但我没有10分......!这是一个非现场链接:点击这里

Phi*_*eck 18

您应该将TargetNullValue属性添加到绑定:

<TextBox Grid.Column="1" Grid.Row="0" Margin="5,2" 
         Text="{Binding Path=MyEntityObject.SizeLower, 
         Mode=TwoWay, 
         TargetNullValue=''}" />
Run Code Online (Sandbox Code Playgroud)

这告诉绑定将null值MyEntityObject.SizeLower视为string的string.empty,设置时将string.empty视为null.