Переход на новую запись в Коллекции - PullRequest
0 голосов
/ 23 мая 2009

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

У меня есть экран WPF с сеткой данных слева и текстовыми полями справа от экрана. DataGrid привязан к ObservableCollection (Activity), и я могу щелкать вверх и вниз 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

1 Ответ

0 голосов
/ 23 мая 2009

В WPF каждый производный элемент управления ItemsControl (перечислите свою DataGrid) тайно использует производную CollectionView для облегчения навигации между записями / элементами - фактически это класс, который предоставляет валюту механизм, который помогает другим элементам управления (например, текстовое поле) определить, какой элемент данных связан с текущий .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...