2017-02-03 58 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'的新實例。無論您在用戶界面中使用的是什麼控件,都可能與現有的「CustomerList」綁定,這不是您正在使用的控件。 –

+0

@ElementalPete我確實設置了一個斷點,我正在獲取我期待的項目。我不確定爲什麼你看不到我的CustomerList.MoveCurrentTo(item)語句。它在那裏。 此代碼位於視圖模型的構造函數中。所以這隻能執行一次。我有一個消息框顯示CurrentChanged事件中的項目,以查看我所得到的。我得到一個空項目作爲當前項目。 – Ken

+0

我可以看到你調用'CustomerList.MoveCurrentTo(item)'的地方,我看不到那個方法做了什麼。如果'item'不爲null,並且將'item'傳遞給'MoveCurrentTo'方法,並且'MoveCurrentTo'方法負責設置當前項目,並且當前項目未被設置,那麼問題很可能在MoveCurrentTo方法中... –

回答

0

問題似乎是我使用CollectionView而不是派生自該類的類。 (謝謝@ R.Richards)。 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

找到一個驅魔者更容易! :) –