2017-02-03 5 views
0

場所の顧客リストを読み込んだ後、特定の顧客を現在の項目として選択したいと考えています。現在の項目に移動しようとすると、項目は選択されません。私は(デバッグによって)私が移動したいアイテムが存在することを確認しました。MoveCurrentTo DataGrid

私は現在の項目に

(CustomerList.MoveCurrentTo(CustomerList.CurrentItem) //it works but is senseless. 
CustomerList is an ICollectionView. 

を移動した場合、私の質問は、「私は私が選択した特定の項目に現在の項目にフォーカスを移動するにはどうすればよい?」です。

CustomerList = new CollectionView (_service.GetCustomers().Where(l => l.LocationID == customer.LocationID)); 
var item = CustomerList.Cast<AlarmPermit.Entities.Customer>().Where(l => l.BRKey == 52151).Single(); 
CustomerList.MoveCurrentTo(item); 
+0

1) 'VAR項目= CustomerList.Cast始まる行にブレークポイントを設定し...'、あなたが期待する項目を取得しているかどうかを確認します。もしあなたがそうであれば、問題はあなたの 'CustomerList.MoveCurrentTo(item)'にあります。これは表示されていません。 2)このコードを実行するたびに、「CustomerList」の新しいインスタンスを作成しています。 UIで使用しているコントロールは、使用しているものではない既存の「CustomerList」にバインドされている可能性があります。 –

+0

@ ElementalPeteブレークポイントを設定しましたが、私が期待しているアイテムを取得しています。なぜ私のCustomerList.MoveCurrentTo(item)ステートメントが見えないのか分かりません。それはそこにある。 このコードは、ビューモデルのコンストラクタにあります。これは一度だけ実行されます。 CurrentChangedイベントのアイテムを表示するメッセージボックスが表示されます。私は現在のアイテムとしてヌルアイテムを取得します。 – Ken

+0

私は 'CustomerList.MoveCurrentTo(item)'をどこで呼び出すことができますか、私はそのメソッドが何をしているのか分かりません。 'item'がヌルでなく、' item'を 'MoveCurrentTo'メソッドに渡し、' MoveCurrentTo'メソッドが現在のアイテムの設定を担当していて、現在のアイテムが設定されていない場合は、問題が起こりそうです'MoveCurrentTo'メソッドで... –

答えて

0

問題は、そのクラスから派生したクラスの代わりにCollectionViewを使用したことが原因と思われます。 (ありがとう@ R.リチャーズ)。 MSDNのドキュメントでは、CollectionViewを直接使用しないでください。

コレクションをCollectionViewからListCollectionViewに変更した後、コードが機能しました。 CustomerListはまだICollectionViewですが、私はそれにListCollectionViewオブジェクトを割り当てています。ここで

変更されたコードです:

CustomerList = new ListCollectionView (_service.GetCustomers().Where(l => l.LocationID == customer.LocationID).ToList()); 
var item = CustomerList.Cast<AlarmPermit.Entities.Customer>().Where(l => l.BRKey == 52151).Single(); 
CustomerList.MoveCurrentTo(item); 
+0

エクソシストを見つけるのが簡単です! :) –