2009-05-23 2 views
0

Я только начинаю с коллекций (ObservableCollections), и я ударил стену, которую, как я предполагал, будет легко. Я уверен, что это легко, но я просто не нахожу ответа.Перемещение к новой записи в коллекции

У меня есть экран WPF с DataGrid слева и TextBoxes справа от экрана. DataGrid привязан к ObservableCollection (Activities), и я могу щелкнуть вверх и вниз по DataGrid и увидеть обновленные обновления TextBoxes с правильной информацией. Затем я могу изменить информацию в 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 полученного контроля (список вашего DataGrid) тайно использует производную CollectionView для облегчения навигации между записями/пунктами - по сути это тот класс, который обеспечивает механизм валюты, что помогите другим элементам управления (например, текстовому поле) определить, какой элемент данных связан с текущий.

Если вы создаете новый объект и добавляете его в свой ObservableCollection, вы можете использовать один из методов MoveXXX CollectionView для перемещения, чтобы сделать этот элемент актуальным. Вы можете (в зависимости от того, какой тип CollectionView вы получаете) также вызывают метод Add в CollectionView, и он автоматически вызовет метод Add на вашем базовом ObservableCollection.

В любом случае, получение ссылки на CollectionView является секретом. Вы можете использовать статический метод CollectionView (я забыл его имя), чтобы получить представление, используемое для вашего DataGrid, или (и это мой предпочтительный метод), вы можете явно создать ListCollectionView и привязать к нему свой DataGrid, а не ObservableCollection ,

+0

Привет, Марк, я использую Dathagrid Xceed, который использует DataGridCollectionView, который делает то же самое, что и ListCollectionView, поэтому я решил использовать это. Спасибо, что указал мне в правильном направлении. Митч – Mitch

Смежные вопросы