Silverlight 4 AutoCompleteBox,将SelectedItem设置为null

时间:2010-10-22 08:33:03

标签: silverlight-4.0 autocompletebox

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

2 个答案:

答案 0 :(得分:1)

我相信这样当没有实际搜索项时,该框会显示“搜索此处”之类的内容。例如,请参阅StackOverflow的搜索框,当它为空时显示“搜索”。

答案 1 :(得分:1)

这真烦人,我还没有找到解决办法。它位于Silverlight Toolkit问题跟踪器here上。我还阅读了一些关于将ItemsSource设置为null的内容here。我将要玩。

如果找到解决方法,我会更新。