2014-02-15 2 views
11

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

public int? SizeLength { get; set; } 

XAML

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

После того, как пользователь пытаются забой или удалить значение в этом textbox, сообщение Value '' cannot be converted.

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

ответ

22

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

{Binding TargetNullValue=''} 
+0

Я попытался '', а также '' ..Both все равно бросает ту же ошибку –

+2

@ Mr.SuicideSheep - вам нужно установить пустую строку, как указано в ответе, а не на 0. –

3

Поскольку интегрированные преобразователи из строки в одной/двойном/междунар МОФА ожидает строку для разбора они не будут по умолчанию нулевого значения 0, потому что вы не всегда хотят что поведение, так как написано в MSDN:

Получает или устанавливает значение, которое используется в мишени, когда значение источник является недействительным.

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

{Binding TargetNullValue=''} 

TargetNullValue msdn

0

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

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

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

{Binding prop, TargetNullValue=''} 
Смежные вопросы