Обнуляемое свойство базы данных, но texbox по-прежнему показывает красную рамку при удалении содержимого

Привет, я привязываю текстовое поле WPF к свойству Entity Framework следующим образом:

<TextBox Grid.Column="1" Grid.Row="0" Margin="5,2" 
         Text="{Binding Path=MyEntityObject.SizeLower, Mode=TwoWay}" />

Он отлично привязывается к свойству, и когда я его изменяю, он сохраняется в БД, как и ожидалось. Но если я удалю содержимое текстового поля, я получу красную границу ошибки вокруг него. У меня нет никакого валидатора, поэтому я предполагаю, что texbox жалуется на то, что значение не допускает значения NULL. Но на самом деле это свойство в БД допускает значение NULL, поэтому я не могу понять, почему это приведет к ошибке.

Сгенерированное системой определение свойства 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)

Что-то мне не хватает? Я думал, что система привязки может определить, допускает ли свойство значение NULL, и разрешить ли это значение?

Как узнать, в чем ошибка? Парение, похоже, не помогает.

Спасибо за любой совет.

=================================== ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Если я выберу все и удалю, а затем изменю фокус, появится окно проверки. Вот снимок экрана до и после. Также я подтвердил, что могу вручную помещать NULL в базу данных для связанных свойств, так что проблема не в этом.

ОТКЛОНЕН. Пытался поместить сюда картинку, но у меня нет 10 баллов ...! Вместо этого приведена внешняя ссылка: НАЖМИТЕ ЗДЕСЬ


person TripleAntigen    schedule 01.12.2010    source источник
comment
TripleAntigen .. не могли бы вы загрузить скриншот, когда при удалении текста отображается красная рамка? Я сам хочу это увидеть ... так как это кажется таким странным: | ... и, возможно, скриншоты помогут нам ответить на ваш вопрос. :-)   -  person Nawaz    schedule 01.12.2010
comment
Спасибо, Наваз, см. Измененный вопрос. Изображение находится во внешней ссылке, потому что оно не будет принимать изображение, пока я не наберу 10 баллов.   -  person TripleAntigen    schedule 01.12.2010


Ответы (1)


Вы должны добавить свойство TargetNullValue в свою привязку:

<TextBox Grid.Column="1" Grid.Row="0" Margin="5,2" 
         Text="{Binding Path=MyEntityObject.SizeLower, 
         Mode=TwoWay, 
         TargetNullValue=''}" />

Это указывает привязке обрабатывать нулевые значения в MyEntityObject.SizeLower как string.empty для отображения и string.empty как null при установке.

person Philip Rieck    schedule 01.12.2010
comment
Ах, ты - легенда Филип Рик, который сделал свое дело !! Большое спасибо. - person TripleAntigen; 01.12.2010
comment
Также спасибо Филиппу за ответ! Работал как шарм! - person PHenry; 27.05.2014