Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过绑定处理MaxLength_C#_Data Binding_Microsoft Metro_Windows Phone 8_Ivalueconverter - Fatal编程技术网

C# 通过绑定处理MaxLength

C# 通过绑定处理MaxLength,c#,data-binding,microsoft-metro,windows-phone-8,ivalueconverter,C#,Data Binding,Microsoft Metro,Windows Phone 8,Ivalueconverter,我试图通过绑定来处理文本框的最大长度。我正在使用一个名为“MaxLengthConverter”的助手类(请参见此处)。文本框当前看起来如下所示: <TextBox MaxLength="{Binding TestValue, Mode=TwoWay, Converter={StaticResource MaxLengthConverter}, ConverterParameter='7'}" Text="{Binding TestValue, Mode=TwoWay}" InputSco

我试图通过绑定来处理文本框的最大长度。我正在使用一个名为“MaxLengthConverter”的助手类(请参见此处)。文本框当前看起来如下所示:

<TextBox MaxLength="{Binding TestValue, Mode=TwoWay, Converter={StaticResource MaxLengthConverter}, ConverterParameter='7'}" Text="{Binding TestValue, Mode=TwoWay}" InputScope="Number" />
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。
问题是ValueConvert仅在我离开文本框(LostFocus)时才会被调用。如何在用户每次键入内容时调用ValueConverter(按键)?

将显式的
UpdateSourceTrigger
定义为
PropertyChanged
,因为文本框默认为LostFocus

例如:



XAML在后找不到。由于我正在编写一个WindowsPhone8应用程序,我也猜UpdateSourceTracger没有属性更改。UpdateSourceTrigger的唯一选项是“默认”和“显式”。好的。你能查一下这个吗?谢谢。我要去看看。
  <TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>