在AutoCompleteBox的源代码中(可从Microsoft下载),我发现了以下内容:
/// <summary> /// Called when the selected item is changed,updates the text value /// that is displayed in the text box part. /// </summary> /// <param name="newItem">The new item.</param> private void OnSelectedItemChanged(object newItem) { string text; if (newItem == null) { text = SearchText; } else { text = FormatValue(newItem,true); } // Update the Text property and the TextBox values UpdateTextValue(text); // Move the caret to the end of the text box if (TextBox != null && Text != null) { TextBox.SelectionStart = Text.Length; } }
困扰我的是{text = SearchText;}行.如果我将SelectedItem绑定到我的ViewModel并且在搜索条目进入AutoCompleteBox之后,SearchText不为空,那么当底层数据重置为null时,AutoCompleteBox可能会显示SearchText而不是空字符串.有人可以解释为什么这样写,并建议一个解决方法?
解决方法
我相信这样,当没有实际的搜索项时,该框会显示“搜索此处”之类的内容.有关示例,请参阅StackOverflow的搜索框,其中显示“搜索”为空.