我得到了一个带有很多“客户”的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/

10-17 00:23