如何在可编辑的 WPF ComboBox 上使用更新源触发器?

4
我有一个组合框(在我的WPF-MVVM应用程序中)。我已经设置了IsEditable = true。但是当我开始输入时,“属性更改事件”会触发。
请问如何在此处设置UpdateSourceTrigger = Propertychanged
另外,如果用户输入了新值(即不在列表中的值),我需要调用验证函数(使用编辑功能)。
非常感谢您的帮助。
    <ComboBox ItemsSource="{Binding Path = PlanTypeBasedContractNumberList }" Width="90" IsEditable="True"  
SelectedValue="{Binding GeneralCharacteristicsDataContext.ContractNumber.Value}">
                            </ComboBox>

你是如何绑定ComboBox的?请发一些代码... - Thomas Levesque
我已经更新了问题并附上了代码。 - Relativity
1个回答

8
在可编辑的ComboBox中,SelectedItemSelectedValue属性指的是Popup中的项目,而不是可编辑的项目。一旦您开始输入,SelectedItem就会变成“未选择”,这就是事件触发的原因。
要绑定到ComboBoxTextBox值,请使用Text属性:
<ComboBox IsEditable="True" Text="{Binding Path=..., UpdateSourceTrigger=...}">

“Text box of combobox” 是什么意思?是指项模板中的文本框吗?您能给我提供一个示例代码吗? - Relativity
当您在 ComboBox 中使用 IsEditable 时,由于 ControlTemplate 的结果,您将获得一个包含 PopupTextBox 的复合控件。它是您输入内容的地方。我提供的示例代码就足够了。 - Rick Sladkey
但是在上面的示例中,SelectedValue/SelectedItem在哪里呢?我的意思是,当我从列表中选择另一个项目时,文本不会被设置,只有SelectedItem/Value会被设置,对吧? - Relativity
如果从“Popup”选择了一个项目,“Text”将包含其文本,就像您在屏幕上看到的那样。 - Rick Sladkey
我正在捕获属性更改事件...当这个选定项发生变化时...我必须执行一些操作。根据上述代码,我的文本的属性更改被调用了...但是对于已经存在的列表的选定值更改没有被调用。 - Relativity
那么你想要的就是你提供的代码。请参见我的答案的第一部分。 - Rick Sladkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接