我见过很多引用make的TextBox只允许数字输入......没问题,我明白怎么做。但是,典型的绑定仍然是TextBox的“Text”(TextProperty依赖项),它是一个字符串值。
如果输入的值被强制为数字的值(比如...整数或双精度,浮点数用于最终存储),那么你将如何使用正确的双向绑定来说明
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; }
}
我在一个窗口上有一个TextBox用于输入,适用的行为/过滤器只允许将数字(和小数点)值输入到TextBox中,用户的显示是通过显示的“Text”值。
所以,我想要一个“MyRecord.IntegerOnly”的实例来获取推回(到数据库)和向前(到视图供用户查看/编辑)的数值。
由于C#中的所有内容都是类型转换的,因此我没有看到从文本到数字的任何“隐含”或“转换”值。
类似地,用于进行DATE或DATETIME TextBox控件的数据输入。没有暗示/转换价值......
我该怎样/应该继续这个?
答案 0 :(得分:3)
我不知道我是否不理解您的问题,但Binding
类会为您处理基本类型的转换。 TextBox.Text
只能显示字符串/文本值,无论它绑定到什么(int,double,DateTime等)。 Binding
负责在目标和来源之间来回转换值,即Int32 -> String
(定位)和String -> Int32
(返回来源)。
您可以非常轻松地指定TextBox
仅接受DateTime
值,因为他们知道用户要将其作为String
输入,Binding
会将其转换为DateTime
预期的Binding
值。当您需要转换IValueConverter
未自动处理的值时,您需要提供自己的{{1}}。
这是回答你的问题还是我错过了这一点?