删除文本框绑定的最后一个字符

本文关键字:最后一个 字符 绑定 文本 删除 | 更新日期: 2023-09-27 18:34:14

我在将文本框绑定到我视图中的属性时遇到了一些问题。绑定工作完美,直到我尝试删除最后一个字符。光标向后移动,但最后一个字符仍位于文本框及其绑定到的属性中。

<TextBox Grid.Column="0" Text="{Binding SearchText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

而普罗佩蒂本身

    public string SearchText
    {
        get { return _searchText; }
        set 
        {
            if (searchText != value)
            {
                if (value != "")
                {
                    Debug.WriteLine("Typed Value " + value);
                    searchText = value;
                }
            }
        }
    }

这将输出为:"类型值 F",如果我尝试从文本框中完全擦除 Foo。在最后一次按退格键时,光标向后移动,但字符不会被删除。

我该如何解决这个问题?

删除文本框绑定的最后一个字符

条件语句阻止设置新值。

if (value != "") //if value is NOT an empty string
{
   Debug.WriteLine("Typed Value " + value);
   searchText = value;
}

因此,当它是空字符串(即删除最后一个字符)时,您不会调用searchText = value因此不会设置新值。我看不出在您显示的代码中进行该检查的原因,因此您可以将其删除或确保您始终在该块之外设置value

从文本框中删除所有内容意味着将文本设置为字符串。空或"。

现在,您不让该属性设置为空,因此最后一个字符始终保留在 TextBox 中。

只需骑 if (值 != ")

再看看你的代码

if (value != "")
{
   Debug.WriteLine("Typed Value " + value);
   searchText = value;
}

如果值 == " 搜索文本未分配'

if (value != "")
{
   Debug.WriteLine("Typed Value " + value);      
}
searchText = value;