我得到了一个带有很多“客户”的ComboBox
(使用MultiBinding
作为Text
(例如“644 Pizza Place”)),这从一开始就很有效(CustomerNumber)。但是,如何使它匹配并仅通过输入“Pizza Place”进行选择?
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="CustomerNumber" />
<Binding Path="CustomerName" />
</MultiBinding>
最佳答案
ComboBox使用TextSearch class进行项目查找。您可以在ComboBox上设置TextSearch.TextPath依赖项属性:
<ComboBox Name="cbCustomers" TextSearch.TextPath="CustomerName">...</ComboBox>
这将允许您通过CustomerName进行匹配,但是您将通过CustomerNumber进行宽松的匹配。
没有太多细节的查找是通过以下方式完成的:
键入时将调用ComboBox.TextUpdated方法。此方法调用TextSearch.FindMatchingPrefix查找匹配项。 TextSearch.FindMatchingPrefix是使用string.StartsWith(..)调用的方法。
没有其他方法可以替换string.StartsWith()调用或TextSearch.FindMatchingPrefix调用。因此,如果您想用自定义逻辑(例如string.Contains)交换string.StartsWith(),就好像必须编写自定义ComboBox类。
关于c# - WPF ComboBox TextSearch使用包含而不是StartsWith,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15275261/