2009-05-23 99 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