ComboBox SelectionChanged事件在预览中触发

时间:2012-01-30 21:52:44

标签: c# wpf events combobox

所以我有一个ComboBox与DataSet的绑定,我希望只有在选择更改时才会触发事件。我尝试使用SelectionChanged事件,但只要有建议的项目就会触发。例如,如果我键入“eb”,则会选中“ebtoulson”并突出显示“toulson”。我的问题是如何禁止此事件触发建议或我使用错误的事件?任何建议将不胜感激。

2 个答案:

答案 0 :(得分:0)

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

您有什么需要使其仅适用于UI?

答案 1 :(得分:0)

我想出了这个解决方案。我觉得它不是最优的,但它涵盖了你的情况。我正在使用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表达式来确定用户到目前为止输入的内容是否已将选择范围缩小到单个项目。但是,对于您的情况,该查询的成本可能过高。试试吧,让我知道。