2014-02-15 29 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

我試圖'<文本框的文本= 「{結合[someViewModel] .SizeLength,模式=雙向,TargetNullValue = '0'}」>'以及'<文本框的文本=「{結合[someViewModel] .SizeLength,Mode = TwoWay,TargetNullValue = 0}「>'..兩者仍然拋出相同的錯誤 –

+2

@ Mr.SuicideSheep - 您需要將它設置爲空字符串,如答案中所述,而不是0。 –

3

由於從字符串到WPF的單/雙/ INT的集成轉換器期待一個字符串進行解析時,他們將不爲空值默認爲0,因爲你不會總是希望該行爲,因此它是用MSDN編寫的:

獲取或設置當源爲空的 值時目標中使用的值。

您使用此定義爲空輸入您的默認值:

{Binding TargetNullValue=''} 

TargetNullValue msdn

0

您需要在您的XAML,可爲空或添加的mscorlib的參考?在你的道具中使用具有值「」的TargetNullValue,就像Elios說的那樣。

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

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

{Binding prop, TargetNullValue=''} 
相關問題