因此,我有一个自动完成框,用于搜索要从列表中过滤的名称。 一旦尝试重新获得焦点,我将尝试让搜索栏重新填充原始搜索条件。
问题是使用了selectionchanged事件,箭头键触发了该事件,并正在加载所需的更多数据,这大大降低了程序的速度。
我尝试使用按键事件,虽然它实际上直到按下回车键才真正选择该项目,但它确实弄乱了重新填充的原始搜索条件。
private void acbSearch_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (SelectedItem != null)
{
_oldID = SelectedItem.ID;
RaiseItemChangeEvent();
}
}
以下是系统的两个不同版本,以显示到目前为止我所做的事情
private void acbSearch_PreviewKeyUp(object sender, KeyEventArgs e)
{
GlobalData.SearchText = acbSearch.Text;
if (SelectedItem != null && (e.Key == Key.Return || e.Key == Key.Tab || e.Key == Key.Enter))
{
if (this.CID != _oldCID || SelectedItem.ID != _oldID)
{
_oldID= SelectedItem.ID;
acbSearch.IsDropDownOpen = false;
RaiseItemChangeEvent();
}
}
}
我想让箭头键在列表中的所选项目上执行更多的“悬停”操作,直到按下Enter键或鼠标选择该项目为止。
这可以实现吗?