2011-11-22 14 views
2

MVVMを使用してListViewにリストデータを表示しています。リストビューは、次のように非常に簡単です:WPF ListViewキーの検索問題

<ListView HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      ItemsSource="{Binding Customers}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn DisplayMemberBinding="{Binding FirstName}"> 
        <GridViewColumnHeader Width="100" Content="First Name" /> 
       </GridViewColumn> 

       <GridViewColumn DisplayMemberBinding="{Binding LastName}"> 
        <GridViewColumnHeader Width="100" Content="Last Name" /> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 

    </ListView> 

私はListViewコントロールに顧客のオブジェクトのリストを結合して、私はListViewコントロール内の項目を強調表示し、Tの入力を開始するとき、問題が来ます。リストビューは、T文字を入力するたびに次の項目を強調表示します。問題を見つけるためにいくつかの時間を費やすことで

、私は私の顧客オブジェクトはので、私は、顧客オブジェクトのToString()関数は常にTestMVVMProject.Customer

を返していると思う名前空間TestMVVMProjectを持っていることを、誰もが私にいくつかのアイデアを与えることができるので、それは追跡しますどのようにこの動作を停止するには?

+0

あなたの勘違いが正しい場合、 'ListName'を' ListName'とするために 'DisplayMemberPath'を"正しく設定 "してください。しかし、最初の列を使用するソリューションをお探しですか? – user7116

+0

はい、最初の列を使用してソリューションを探しています。私がしようとしているのは、ユーザーがキーを入力したときに最もよく一致する「FirstName」を強調表示することです。しかし、 'T 'が入力されたときに問題が発生しました。ありがとう – Jing

答えて

0

デフォルトでは、ListViewはテキスト検索機能を実装しているからです。この現象は、リストボックスのIsTextSearchEnabledプロパティを使用して停止できます。試してみてください。

<ListView HorizontalAlignment="Stretch" 
     VerticalAlignment="Stretch" 
     ItemsSource="{Binding Customers}" 
     IsTextSearchEnabled="False"> 

これは、不要なときにテキスト検索を無効にする必要があります。

+0

ありがとうございます。それは私が探している解決策です。 – Jing

0

編集: いくつかの調査の後、私は次の解決策が見つかりました:

<ListView 
    TextSearch.TextPath="FirstName" 
    ...> 

を、これが役立つことを願っています。

オリジナルの答え:

ジャストビューモデルにToString()を上書きし、あなたが適切な動作を取得します。

public class Customer 
{ 
    public string Name { get; set; } 

    public override string ToString() 
    { 
     return this.Name; 
    } 
} 
+0

返信いただきありがとうございます。しかし、ToString()をオーバーライドするのは、ここでは最善の解決策ではありません。 – Jing

+0

@Jing解決策が見つかりました。編集済みの回答を参照してください。 –