6

as (たとえば、「644 Pizza Place」)をComboBox使用して多くの「Customers」を 取得しましたが、これは最初からうまく検索できます(CustomerNumber)。しかし、「Pizza Place」と入力するだけで一致させて選択するにはどうすればよいですか?MultiBindingText

<MultiBinding StringFormat="{}{0} {1}">
    <Binding Path="CustomerNumber" />
    <Binding Path="CustomerName" />
</MultiBinding>
4

2 に答える 2

4

ComboBox は、アイテムの検索にTextSearch クラスを使用します。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.StartsWith() をカスタム ロジック (string.Contains など) と交換する場合は、カスタム ComboBox クラスを作成する必要があるようです。

于 2013-03-08T11:32:59.110 に答える