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

时间:2013-10-07 21:17:19

标签: c# wpf binding

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

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

和Propety本身

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

            }
        }
    }

如果我尝试从文本框中完全删除Foo,则输出到:“Typed Value F”。在最后一次按退格键时,光标向后移动,但不删除该字符。

我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:0)

您的条件语句会阻止设置新值。

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

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

答案 1 :(得分:0)

从TextBox中删除所有内容意味着将Text设置为string.Empty或“”。

现在你不要将属性设置为空,因此你的最后一个字符总是留在TextBox中。

乘坐if(value!=“”)

答案 2 :(得分:0)

再次查看您的代码

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

如果value ==“”searchText未分配'

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