转到Collection上的新记录

时间:2009-05-23 18:31:51

标签: wpf vb.net collections record

我刚刚开始使用集合(ObservableCollections),而且我已经碰到了一个我认为很容易的墙。我确信这很容易,但我只是没有找到答案。

我有一个WPF屏幕,左边是DataGrid,屏幕右边是TextBoxes。 DataGrid绑定到ObservableCollection(Activities),我可以在DataGrid中上下单击,并使用正确的信息查看我的TextBoxes刷新。然后我可以更改TextBoxes中的信息并将其保存回DB。一切都很完美!

然而,当谈到向集合添加记录时,我对正确的方法感到迷茫。我正在使用如下所示的Add方法,但是如何移动到这个新创建的记录以便进行编辑?我已经尝试了十几种方法,但我还没有找到正确的方法。 TextBoxes仍然专注于最后编辑的记录。有什么想法吗?

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

1 个答案:

答案 0 :(得分:0)

在WPF中,每个ItemsControl派生控件(列出你的DataGrid)秘密使用CollectionView的衍生物来促进记录/项目之间的导航 - 实际上它是提供货币的类帮助其他控件(如文本框)的机制确定哪个数据绑定项是当前

如果您创建一个新对象并将其添加到ObservableCollection中,则可以使用CollectionView的一个MoveXXX方法移动以使该项目为最新。您可以(根据您获得的CollectionView类型)在CollectionView上调用Add方法,它将自动调用基础ObservableCollection上的Add方法。

无论哪种方式,重新获取对CollectionView的引用都是秘密。您可以使用CollectionView的静态方法(我忘记它的名称)来检索用于DataGrid的视图,或者(这是我的首选方法)您可以明确地创建ListCollectionView并将DataGrid绑定到它,而不是ObservableCollection