5

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

4

2 回答 2

1

我相信这是因为当没有实际的搜索项时,该框会显示类似“在此处搜索”的内容。例如,查看 StackOverflow 的搜索框,当它为空时会显示“搜索”。

于 2011-03-03T18:21:22.053 回答
1

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

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

于 2011-07-20T14:14:16.977 回答