ObservableCollection <someentity>не обновляется - PullRequest
0 голосов
/ 31 января 2011

Я использую Silverlight 4 и шаблон MVVM для своего приложения. У меня есть список, связанный с одной страницей, скажем one.xaml, и его viewmodel - oneviewmodel.cs. Это страница, на которую я загружаю коллекцию своих альбомов. У меня есть кнопка на этой странице, которая открывает страницу, чтобы добавить новый альбом. Скажем, эта страница two.xaml, а ее viewmodel - twoViewModel.cs. На этой странице я звоню в сервисы риа: -

context.albums.add(somealbum);

и отправьте изменения. Альбом добавляется, и я вижу запись на сервере sql. Однако, когда всплывающее окно закрывается, мой список все еще показывает устаревшие данные. Нужно ли мне снова сделать запрос к серверу, чтобы загрузить только что добавленную сущность? Таким образом, по сути, я должен использовать шаблон обмена сообщениями и запросить oneviewmodel.cs, чтобы снова загрузить объекты. Это правильный способ сделать?

Это мой метод загрузки сущностей альбома: -

  var qry = AlbumContext.GetAlbumsQuery(_profile.UserId);
            AlbumContext.Load<Album>(qry, new Action<System.ServiceModel.DomainServices.Client.LoadOperation<Album>>(albums => {

                if (GetAlbumsComplete != null)
                {

                    if (albums.Error == null)
                    {
                        GetAlbumsComplete(this, new EntityResultArgs<Album>(albums.Entities));
                    }
                    else
                    {
                        GetAlbumsComplete(this,new EntityResultArgs<Album>(albums.Error));
                    }
                }

            }), null);

Здесь используется тот же шаблон и классы, что и у Шона Вильдермута.

Заранее спасибо:)

1 Ответ

1 голос
/ 27 февраля 2011

Вам не нужно снова загружать все с сервера, но вам нужно добавить новый альбом в свою коллекцию ObservableCollection.Пока вы только добавили его в DomainContext.Вы можете сделать один из следующих двух вариантов:

1) Добавить новый альбом непосредственно в коллекцию с помощью

collection.Add(somealbum);

или

2) Я предполагаю, что вы заполниObservableCollection в GetAlbumsComplete().Просто выполните эту часть еще раз, чтобы ObservableCollection был заполнен содержимым вашего DomainContext.Albums.

...