Разрешить пользователю вводить пробелы между словами, но удалять начальные и конечные пробелы при использовании PropertyChanged

В следующем коде я выполняю поиск, как только вводится седьмой символ. Все работает нормально, за исключением того, что пользователь не может вводить пробелы, потому что, как и ожидалось, они удаляются каждый раз, когда вводится новый символ, так как я вызываю Trim() метод на PropertyChangedсобытие. То, что я хотел бы сделать, это дать пользователю возможность печатать пробелы, но удалять любые начальные и конечные пробелы. Другими словами, если пользователь вводит пробелы до и после слова или предложения, которое он / она ищет, я хочу удалить пробелы и просто искать слово.

Например, если пользователь печатает...<space><space><space>The Cat<space><space><space>Я хочу, чтобы программа игнорировала пробелы и искала The Cat как только последний t введен

Каков наилучший способ сделать это?

XAML:

<TextBox x:Name="myTextBox" Text="{Binding InputFileNameChanged, UpdateSourceTrigger=PropertyChanged}"/>

ViewModel.CS

    public string InputFileNameChanged
    {
        get { return _inputFileName; }
        set {
            _inputFileName = value.Trim();

            if (_inputFileName.Length == 7) {
                // search file
            }
        }
    }

1 ответ

Решение

На вашем месте я бы не обрезал фоновое поле, а только обрезал перед выполнением проверки / поиска. т.е.

public string InputFileNameChanged
{
    get { return _inputFileName; }
    set {
        _inputFileName = value;
        var trimmed = value.Trim();
        if (trimmed.Length >= 7) {
            // search file using trimmed
        }
    }
}
Другие вопросы по тегам