1

我在 WPF 应用程序中使用标准的 AutoCompleteBox 控件,用户在其中键入查询,并在键入时构建和过滤自动完成列表。在下拉列表中,我想突出显示与用户输入的文本匹配的每个列表框项中的文本。例如,如果他们键入 ap 并且下拉菜单中有 dap 和 apple,那么每个单词中的 ap 将是粗体,而其余文本不会是粗体。

我有所有代码可以将正确的文本实际更改为粗体,但我永远无法在正确的时间调用它。我找不到正确的事件来调用代码进行加粗。为了进行加粗,我遍历 VisualTreeHelper 以在每个 ListBoxItem 中找到每个 TextBlock,但我找不到正确的事件来触发此遍历。我总是在显示整个列表之前或在它被过滤之前调用它,因此粗体文本永远不会显示。

我知道我的代码有效,因为如果我从列表框选择更改事件中调用遍历,它会正确地加粗文本,但这不是我正在寻找的交互,因为用户必须突出显示一个条目才能看到粗体文本。

我可以处理什么事件并从中调用此遍历,以便在过滤和显示列表之后?请注意,每次用户在搜索框中输入另一个字符时,都会重新过滤该列表。

感谢您的帮助,因为这让我难以置信!

4

0 回答 0