我有可编辑的组合框,MVVM。 当我在组合框中写东西时,我需要dropdown = true。
Text="{Binding textsearch, UpdateSourceTrigger=PropertyChanged}"
这里的 textsearch 我写了OnPropertyChange for ComboBox IsDropDownOpen = true,但它只适用于on,当我选择行,然后再次尝试写入时,dropdown = false并且不响应属性。
另外,当我选择行并更改文本时,我无法再次选择此行,因为它已被选中,我需要先更改所选项目,但是当我更改所选项目时,文本也会更改。
如何使过滤器工作?
或者像另一个变体一样,我添加了文本框用于过滤文本,但是当我编写文本并调用 textsearch 属性时,文本框失去焦点,而组合框具有此焦点...如何将焦点保存在文本框中和下拉组合物品清单?
答案 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页面查看哪些事件可用,并自行完成。