MaxLength для AutoCompleteBox в Silverlight

Я использую управление AutoCompleteBox в своем проекте. Теперь я должен ограничить длину текста, который пользователь может ввести, например, максимальной длиной 50 символов. Для этого случая TextBox имеет свойство MaxLength, но AutoCompleteBox не имеет. Кроме того, AutoCompleteBox не выставляет свойства TextBox.

Я пытался решить вопрос таким образом:

private void autoCompleteBox_TextChanged(object sender, RoutedEventArgs e)
{
        AutoCompleteBox autoCompleteBox = sender as AutoCompleteBox;
        if (autoCompleteBox.Text.Length > MaxCharLength)
        {
            autoCompleteBox.Text = autoCompleteBox.Text.Substring(0, MaxCharLength);
        }
}

Большой недостаток этого метода состоит в том, что после установки текстового свойства, каре текстового поля сбрасывается к позиции запуска, и когда пользователь продолжает вводить, символы в конце обрезаются, и каре всегда переходят к началу. Нет никаких методов, выставленных для управления каре (как Избранный метод TextBox).

Какие-либо идеи, как максимальная длина может быть установлена для AutoCompleteBox?

1
задан Centro 26 June 2010 в 20:41
поделиться

1 ответ

Проблема может быть решена путем создания подкласса от класса Control, от которого происходит AutoCompleteBox, следующим образом:

public class AutoCompleteBoxMaxLengthed : AutoCompleteBox
{
    public int MaxLength
    {
        get;
        set;
    }

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if (Text.Length >= MaxLength)
        {
            e.Handled = true;
        }
        else
        {
            base.OnKeyDown(e);
        }
    }
}
1
ответ дан 2 September 2019 в 23:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: