我遇到了将文本框绑定到视图中的属性的问题。 绑定工作完美,直到我尝试删除最后一个字符。 光标向后移动,但最后一个字符仍在文本框中,并且在它绑定的属性中。
<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”。在最后一次按退格键时,光标向后移动,但不删除该字符。
我怎么能解决这个问题?
答案 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;