让用户在单词之间输入空格,但在使用 PropertyChanged 时删除前导和尾随空格

Let user enter spaces between words but remove leading and trailing spaces when using PropertyChanged

在下面的代码中,我在输入第七个字符后立即进行搜索。一切正常,除了用户无法键入空格,因为正如预期的那样,每次输入新字符时它们都会被删除,因为我在 PropertyChanged 事件上调用 Trim() 方法。我希望能够做的是让用户能够键入空格但删除任何前导和尾随空格。换句话说,如果用户在 he/she 正在搜索的单词或句子前后输入了一些空格,我想删除空格并只搜索单词。

例如,如果用户键入... <space><space><space>The Cat<space><space><space> 我希望程序忽略空格并在输入最后一个 t 后立即搜索 The Cat

完成此任务的最佳方法是什么?

XAML:

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

视图模型.CS

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

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

如果我是你,我不会 trim 支持字段,而只会 trim 在进行 check/search 之前。即

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