组合框选择更改了预览时触发的事件

本文关键字:事件 选择 组合 | 更新日期: 2023-09-27 18:22:01

因此,我有一个绑定到数据集的组合框,并且我希望只有在更改选择时才触发事件。我尝试使用SelectionChanged事件,但只要有建议的项目,它就会触发。例如,如果我键入"eb",则会选择"ebtoulson"并突出显示"toulson"。我的问题是,我该如何禁用此事件以根据建议进行激发,还是我使用了错误的事件?任何建议都将不胜感激。

组合框选择更改了预览时触发的事件

当您输入并出现建议时,实际上是在更改所选项目,以便触发事件。

您的具体需求是什么,使其仅适用于UI?

我已经想出了这个解决方案。我觉得这不是最理想的,但它涵盖了你的情况。我使用PreviewTextInput事件通过文本输入处理选择,使用DropDownClosed通过鼠标处理选择。我的ComboBox控件名为cbTest1,我使用的代码如下:

private void cbTest1_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    var q = from i in cbTest1.ItemsSource.Cast<ComboBoxItem>()
            where ((string)i.Content).StartsWith(e.Text, StringComparison.OrdinalIgnoreCase)
            select i;
    if (q.Count() == 1)
    {
        // Have typed out a unique name match.
        var ActiveItem = cbTest1.SelectedItem;
    }
    else
    {
        // Name does not match or has multiple matches.
    }
}
private void cbTest1_DropDownClosed(object sender, EventArgs e)
{
    var ActiveItem = cbTest1.SelectedItem;
}

它使用Linq表达式来确定用户迄今为止键入的内容是否已将选择范围缩小到单个项目。但是,对于您的情况来说,该查询的成本可能太高。试一下,让我知道。