2009-05-23 54 views
0

我剛剛開始使用集合(ObservableCollections),並且我碰到了一個我認爲容易的牆。我相信這很容易,但我只是找不到答案。搬到集合上的新記錄

我有一個WPF屏幕,一個DataGrid的左側和文本框在屏幕的右側。 DataGrid綁定到ObservableCollection(Activities),我可以點擊DataGrid上下,看到我的TextBoxes刷新了正確的信息。然後,我可以更改文本框中的信息並將其保存回數據庫。所有作品完美!

但是,當涉及到添加記錄到集合我迷失了正確的方法。我正在使用Add方法,如下所示,但是如何移動到這個新創建的記錄以便可以編輯?我嘗試了十幾種方法,但我還沒有找到正確的方法。文本框仍然集中在最後編輯的記錄上。有任何想法嗎?

Private Activities As ObservableCollection(Of ActivityRecord) 

Private Sub AddMode() 
    Dim _ActivityRecord As New ActivityRecord(0, DateTime.Now, Nothing, "", gWorkerID, "") 
    Activities.Add(_ActivityRecord) 
'Code to move to the newly created record should go here 

回答

0

在WPF中,每ItemsControl的導出的控制(列出您的數據網格)偷偷使用的CollectionView的衍生物,以便記錄/項目之間的導航 - 實際上它是它提供了貨幣機制的類幫助其他控件(如文本框)確定哪個數據綁定項目是當前

如果您創建一個新的對象,並將其添加到您的ObservableCollection,你可以使用的的CollectionView的MoveXXX方法之一移動,使該項目的電流。您可以(取決於您獲得的CollectionView類型)在CollectionView上調用Add方法,並且它會自動在您的基礎ObservableCollection上調用Add方法。

無論採用哪種方式,重試對CollectionView的引用都是祕密。您可以使用CollectionView的靜態方法(我忘記它的名稱)來檢索用於DataGrid的視圖,或者(並且這是我的首選方法),您可以顯式創建ListCollectionView並將DataGrid綁定到它,而不是ObservableCollection 。

+0

嗨馬克,我正在使用Xceed數據網格,它使用DataGridCollectionView,它與ListCollectionView的做法相同,所以我決定使用它。感謝您指點我正確的方向。米奇 – Mitch 2009-05-26 09:32:33