我试图通过结合处理一个TextBox的MaxLength。 我使用的是被称为“MaxLengthConverter”的辅助类(见这里http://mariabrinas.com/?p=89 )。 目前该文本框看起来是这样的:
<TextBox MaxLength="{Binding TestValue, Mode=TwoWay, Converter={StaticResource MaxLengthConverter}, ConverterParameter='7'}" Text="{Binding TestValue, Mode=TwoWay}" InputScope="Number" />
而MaxLengthValueConvert看起来是这样的:
public class MaxLengthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
if (value.ToString().Contains('.'))
{
string[] len = value.ToString().Split('.');
parameter = len[0].Length + 2;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return parameter;
}
}
的参数是值的长度。 在这个例子中是7最大。 文本框的长度将是7,但是,如果用户键入一个“” (小数点)时,最大长度将是当前长度+ 2,所以他只能写23.45和不23.456。 问题是,当我离开文本框(引发LostFocus)的ValueConvert才会被调用。 我怎样才能调用ValueConverter每次用户类型的东西(的KeyDown)?