2011-10-05 110 views
1

我見過許多引用使文本框只允許數字輸入...沒問題,我明白如何做到這一點。但是,典型的綁定仍然是TextBox的「文本」(TextProperty依賴項),它是一個字符串值。WPF文本框綁定到數字或日期時間字段/屬性

如果正在進入被強制到一個數字的值(比方說......無論是整數或雙,浮法最終儲存),你會怎麼去具有正確的2路綁定說

TextBox.MyInteger 
TextBox.MyDouble 
TextBox.MyFloat 
TextBox.MyDateTime 

所以,如果我有一個類,它有(例如)

public class MyRecord 
{ 
    public int IntegerOnly { get; set; } 
    public double DoubleOnly { get; set; } 
    public DateTime SomeDate { get; set; } 
} 

而且我對條目的窗口上的文本框,適用的行爲/過濾器,只允許數字(小數點)要輸入到文本框中的值,則顯示給用戶的是通過顯示的「文本」值。因此,我想要一個「MyRecord.IntegerOnly」的實例來獲取推回(到數據庫)和數字值(到用戶查看/編輯的視圖)。

因爲C#中的所有東西都是類型轉換的,所以我沒有看到從文本到數字的任何「隱含」或「轉換」值。

同樣,用於輸入DATE或DATETIME TextBox控件的數據。沒有暗示/轉換值...

我該怎麼做/應該如何處理?

回答

2

我不知道我是不是理解你的問題,但Binding類爲你處理基本類型的轉換。 TextBox.Text只能顯示字符串/文本值,而不管它綁定什麼(int,double,DateTime等)。 Binding負責在目標和源之間來回轉換值,即Int32 -> String(到目標)和String -> Int32(回到源代碼)。

你可以非常容易地指定一個TextBox只接受DateTime值知道用戶要進入他們的StringBinding將其轉換爲預期DateTime值。當您需要轉換不是由Binding自動處理的值時,您需要提供自己的IValueConverter

這是回答你的問題還是我錯過了這個觀點?

+0

我想你已經回答了,我會嘗試一些取樣。 – DRapp

+0

謝謝......我想我對所有其他強類型的東西都是過度思考,沒有在內部得到它自動轉換爲正確的數據類型。 – DRapp

相關問題