2012-02-06 76 views
0

我正在開發一個WPF應用程序,其中我使用綁定到我的POCO實體的int字段的文本框,當我清除文本框時我想讓我的當前對象無效,因爲這是一個不可空的字段。整數數據類型文本框上的PoCo驗證

但事情是當我清除我的文本框,它轉換爲string.empty,不能被設置爲一個int值,所以我的int字段永遠不會更新,我的對象仍然有效。

請提出一些合理的解決方案。

+0

設置'Required'屬性? – 2012-02-06 09:21:20

+0

這不是關於必需的屬性,事情是我的財產保持以前的輸入值,即使綁定屬性沒有任何價值。 – 2012-02-06 09:22:49

+0

然後將其設置爲0? – 2012-02-06 09:23:19

回答

0

一種方法是將字符串值綁定(如果不想污染模型,可能會添加到視圖模型中),然後在字符串屬性的設置器中將字符串轉換爲整數存儲在你的int屬性中。

0

正如我看到它,你不應該能夠設置一個'空'值到一個int控件。 也許你可以使用在Extended WPF ToolkitIntegerUpDown控制,使您可以提供一個水印顯示代替NULL值的文本或設置一個默認值,這可能是0

它還具有鍵紡紗,如果需要可以隱藏。

+0

Nah,Integer updown控件不是我的客戶想要的,我想要符合邏輯並接近實際的poco驗證。 – 2012-02-06 10:05:24

+0

您可以像使用任何其他控件一樣使用驗證,我已更新,讓您知道可以在設置爲null時設置默認值。 – Natxo 2012-02-06 10:13:15

0

我複製了我的答案here。我希望它也能幫助你。

,如果你的視圖模型具有int類型的物業,那麼你的綁定只是 工作如果您認爲輸入了這是可轉化爲int。否則 你的viewmodel永遠不會被通知。現在有兩種方法:

首先:確保您的視圖只需要輸入數字(使用 您的數字文本框),並且viewmodel屬性可以是int。

或第二種:您的viewmodel屬性類型是typeof字符串,並且您使用IDataErrorInfo來讓視圖知道何時輸入不是數字。

0

默認WPF應顯示ErrorTemplate當出現驗證錯誤,這包括由無效管型,如嘗試一個字符串字段存儲在一個int驗證錯誤。 TextBox的默認ErrorTemplate是紅色邊框,對於大多數用戶而言,這表示某些內容不正確,並且更改無法保存。

如果你想要的東西比這更多,你可以嘗試在你的綁定中使用IValueConverter,它試圖將值轉換成int,如果失敗將返回0(或一些無效值),因此你的對象將被更新無論用戶輸入什麼內容。