[英]Removing last character of textbox 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”。 在最后一次按Backspace鍵時,光標會向后移動,但不會刪除字符。
我該如何解決?
您的條件語句阻止設置新值。
if (value != "") //if value is NOT an empty string
{
Debug.WriteLine("Typed Value " + value);
searchText = value;
}
因此,當它是一個空字符串(即刪除了最后一個字符)時,您不會調用searchText = value
因此不會設置新值。 我看不出在您顯示的代碼中進行檢查的原因,因此您可以刪除它或確保始終在該塊之外設置該value
。
從TextBox中刪除所有內容意味着將Text設置為string.Empty或“”。
現在,您不要將屬性設置為空,因此您的最后一個字符始終停留在TextBox中。
只要乘上if(值!=“”)
再看看你的代碼
if (value != "")
{
Debug.WriteLine("Typed Value " + value);
searchText = value;
}
如果值==“”未分配searchText'
if (value != "")
{
Debug.WriteLine("Typed Value " + value);
}
searchText = value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.