Combobox自动下拉菜单

时间:2014-06-23 04:48:53

标签: c# wpf mvvm combobox

我有可编辑的组合框,MVVM。 当我在组合框中写东西时,我需要dropdown = true。

 Text="{Binding textsearch, UpdateSourceTrigger=PropertyChanged}" 

这里的 textsearch 我写了OnPropertyChange for ComboBox IsDropDownOpen = true,但它只适用于on,当我选择行,然后再次尝试写入时,dropdown = false并且不响应属性。

另外,当我选择行并更改文本时,我无法再次选择此行,因为它已被选中,我需要先更改所选项目,但是当我更改所选项目时,文本也会更改。

如何使过滤器工作?

或者像另一个变体一样,我添加了文本框用于过滤文本,但是当我编写文本并调用 textsearch 属性时,文本框失去焦点,而组合框具有此焦点...如何将焦点保存在文本框中和下拉组合物品清单?

1 个答案:

答案 0 :(得分:1)

执行此类操作的最简单方法是处理一个或多个事件。您可以尝试处理PreviewTextInput event

<ComboBox ItemsSource="{Binding Items}" IsEditable="True" 
    PreviewTextInput="ComboBox_PreviewTextInput" />

...

private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    ComboBox comboBox = sender as ComboBox;
    comboBox.IsDropDownOpen = true;
}

每次用户输入ComboBox TextBox时,此事件处理程序中的代码都会打开下拉列表。您可能需要处理更多事件才能获得所需的确切行为,但您可以在MSDN上的ComboBox Events页面查看哪些事件可用,并自行完成。