如何覆盖 CSWPFAutoCompleteTextBox 中的文本框内容

How to override the textbox content in CSWPFAutoCompleteTextBox

我正在使用此 MSDN link 中的自动完成文本框。

问题: CSWPFAutoCompleteTextBox 有 属性 "AutoSuggestionList",我将其绑定到可观察的 string 集合。每个 string 由 id + description 组成。当用户从下拉列表中选择一个项目时,如何覆盖 texbox 内容?我想操作文本框内容。

这是一个扩展 wpf 组合框以使其可搜索的文本框。 当用户在文本框中键入字符串时,它会将匹配的字符串显示为下拉列表,用户选择一个项目,该项目就会显示在文本框中。 问题是如何覆盖此控件的文本框内容。

如果您的代码没有实际格式,很难准确回答,但是例如,如果您的字符串是

string[] suggestions = {"0: Yes", "1: No", "666: whatever"}

然后你可以通过类似

的方式得到号码
sugestedString.Substring(0, sugestedString.IndexOf(':'));

编辑:我误解了这个问题。所以如果我现在理解正确的话,你可以用

for(int i = 0; i < suggestions.Length; i++) {
  if(suggestions[i] == selectedString) {
    return i;
  }
}

如果您只在所有可能的建议列表中寻找一个数字。

如果您在缩小的建议中寻找一个数字,它会变得有些困难。

您首先需要记下用户到目前为止输入的内容(例如 "Aut")。然后你需要他实际选择的内容(例如 "Automotive")。有了这些东西,你就可以搜索所有可能的建议,计算其中有多少满足用户输入的开头,最后选择哪一个。它可能看起来像这样:

int counter=0;
for(int i = 0; i < suggestions.Length; i++) {
  if( suggestions[i].StartsWith(typedString)) {
    counter++;
    if(suggestions[i] == selectedString) {
      counter;
    }
  }
}