首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过绑定处理MaxLength

通过绑定处理MaxLength
EN

Stack Overflow用户
提问于 2013-05-24 18:22:47
回答 1查看 663关注 0票数 1

我正在尝试通过绑定来处理TextBox的MaxLength。我使用了一个叫做'MaxLengthConverter‘的帮助器类(参见这里的http://mariabrinas.com/?p=89)。TextBox当前的外观如下所示:

代码语言:javascript
复制
<TextBox MaxLength="{Binding TestValue, Mode=TwoWay, Converter={StaticResource MaxLengthConverter}, ConverterParameter='7'}" Text="{Binding TestValue, Mode=TwoWay}" InputScope="Number" />

MaxLengthValueConvert看起来像这样:

代码语言:javascript
复制
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。最大值。TextBox的长度将为7,但如果用户键入'.‘(小数点),最大长度将是当前长度+ 2,所以他只能写23.45%,而不是23.456。问题是,只有当我离开TextBox (LostFocus)时,才会调用ValueConvert。如何在用户每次键入内容(KeyDown)时调用ValueConverter?

EN

回答 1

Stack Overflow用户

发布于 2013-05-24 18:27:18

将显式UpdateSourceTrigger定义为PropertyChanged,因为textbox的默认值为LostFocus

例如:

代码语言:javascript
复制
  <TextBox>
  <TextBox.Text>
    <Binding Source="{StaticResource myDataSource}" Path="Name"
             UpdateSourceTrigger="PropertyChanged"/>
  </TextBox.Text>
</TextBox>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16732782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档