WPF TextBox MaxLength Предупреждение - PullRequest
2 голосов
/ 15 июня 2011

Можно ли в любом случае активировать видимое и звуковое предупреждение, когда пользователь пытается ввести больше символов, чем разрешено с помощью свойства TextBox.MaxLength?

1 Ответ

0 голосов
/ 15 июня 2011

Вы можете добавить ValidationRule в Binding. Если проверка не удастся, для TextBox будет использоваться ошибка ErrorTemplate по умолчанию, в противном случае вы также можете настроить ее ...

пример ValidatonRule:

class MaxLengthValidator : ValidationRule
{
    public MaxLengthValidator()
    {

    }

    public int MaxLength
    {
        get;
        set;
    }


    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        if (value.ToString().Length <= MaxLength)
        {
            return new ValidationResult(true, null);
        }
        else
        {
            //Here you can also play the sound...
            return new ValidationResult(false, "too long");
        }

    }
}

и как добавить его в привязку:

<TextBlock x:Name="target" />
<TextBox  Height="23" Name="textBox1" Width="120">
    <TextBox.Text>
        <Binding Mode="OneWayToSource" ElementName="target" Path="Text" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:MaxLengthValidator MaxLength="10" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>
...