1

我在将文本框绑定到我认为的属性时遇到了一些问题。在我尝试删除最后一个字符之前,绑定工作得很好。光标向后移动,但最后一个字符仍然存在于文本框和绑定到的属性中。

<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;
                }

            }
        }
    }

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

我怎么能解决这个问题?

4

3 回答 3

0

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

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

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

于 2013-10-07T21:24:20.490 回答
0

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

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

只需乘坐 if (value !="")

于 2013-10-07T21:26:06.387 回答
0

再看看你的代码

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

如果 value == "" searchText 未分配'

if (value != "")
{
   Debug.WriteLine("Typed Value " + value);      
}
searchText = value;
于 2013-10-07T21:26:22.690 回答