Текстовое поле WPF принимает INT, но не NULLABLE INT?

Model

public int? SizeLength { get; set; }

XAML

<TextBox Text="{Binding [someViewModel].SizeLength, Mode=TwoWay}"></TextBox>

Как только пользователь попытается выполнить backspace или delete значение в этом textbox, сообщение Value '' cannot be converted.

Могу ли я узнать, что с ним не так?

Ответ 1

Использование:

{Binding TargetNullValue=''}

Ответ 2

Так как интегрированные преобразователи из строки в single/double/int WPF ожидают, что строка будет анализироваться, они не будут по умолчанию пустым значением равным 0, потому что вы не всегда будете хотеть этого поведения, так как оно написано в MSDN

Возвращает или задает значение, которое используется в целевом объекте, когда значение источник имеет значение null.

вы используете это, чтобы определить свое значение по умолчанию для ввода с нулевым значением:

{Binding TargetNullValue=''}

TargetNullValue msdn

Ответ 3

Вам нужно добавить ссылку mscorlib в свой XAML, Nullable или? в вашей опоре и используйте TargetNullValue со значением "", как сказал Элиос.

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

public Nullable<int> Prop { get; set; }

{Binding prop, TargetNullValue=''}