删除文本框绑定的最后一个字符
本文关键字:最后一个 字符 绑定 文本 删除 | 更新日期: 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;