在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而不是空字符串。有人可以解释为什么这样写,并建议一个解决方法?