2011-10-05 115 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

相关问题