有几个类似的问题,但他们似乎都在寻求相反的行为。我有一个数据绑定组合框,我希望用户能够通过键入来定位其中的值,就像它是一个文本框一样。使用IsEditable时,此行为很简单,但它会导致用户能够选择不在ItemsSource中的值。
当用户执行此操作时,Combobox会突出显示红色,但就是这样。我希望它实际清除值,或选择最接近的匹配,以较容易的方式。这是否可能没有绑定到文本,并将验证逻辑放入setter?
答案 0 :(得分:0)
不,没有简单的方法来解决开箱即用的问题。
你需要像你说的那样做,绑定到文本,或者更正确(至少在我看来),制作专门的派生ComboBox /附加行为,你在PreviewKeyPressed,TextChanged,LostFocus等之间处理它。
从个人经验来看,让这样的自定义行为完美地运作会很痛苦。
我同意你在完美世界中更喜欢的是只读组合框,但改进了“你打字时搜索”,你可以实际看到你输入的内容并在运行中进行编辑。