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

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

Например, если пользователь вводит... <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
            }
        }
    }

person fs_tigre    schedule 20.06.2018    source источник
comment
Но как вы сможете ввести <space><space>The Cutest Cat<space>? Как решить, является ли напечатанный пробел конечным пробелом или пробелом между словами?   -  person dymanoid    schedule 20.06.2018


Ответы (1)


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

public string InputFileNameChanged
{
    get { return _inputFileName; }
    set {
        _inputFileName = value;
        var trimmed = value.Trim();
        if (trimmed.Length >= 7) {
            // search file using trimmed
        }
    }
}
person Christy Salter    schedule 20.06.2018