Silverlight 4.0 可观察收集<;someentity>;不新鲜

Silverlight 4.0 可观察收集<;someentity>;不新鲜,silverlight-4.0,wcf-ria-services,Silverlight 4.0,Wcf Ria Services,我正在为我的应用程序使用Silverlight 4和MVVM模式。我有一个列表框,它绑定到一个页面,比如说one.xaml,它的viewmodel是oneviewmodel.cs。这是我加载相册收藏的页面。我在那个页面上有一个按钮,弹出一个页面来添加一个新的相册。假设页面是two.xaml,它的viewmodel是twowiewmodel.cs。在本页中,我将ria服务称为:- context.albums.add(somealbum); 并提交更改。相册将被添加,我可以在sql server

我正在为我的应用程序使用Silverlight 4和MVVM模式。我有一个列表框,它绑定到一个页面,比如说
one.xaml
,它的viewmodel是
oneviewmodel.cs
。这是我加载相册收藏的页面。我在那个页面上有一个按钮,弹出一个页面来添加一个新的相册。假设页面是
two.xaml
,它的viewmodel是
twowiewmodel.cs
。在本页中,我将ria服务称为:-

context.albums.add(somealbum);
并提交更改。相册将被添加,我可以在sql server中看到该记录。但是,当弹出窗口关闭时,我的列表框仍然显示过时的数据。我是否需要再次请求服务器加载刚刚添加的新实体?因此,本质上我必须使用消息传递模式并请求
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);
var qry=AlbumContext.GetAlbumsQuery(\u profile.UserId);
AlbumContext.Load(qry,新操作(albums=>{
if(GetAlbumsComplete!=null)
{
if(albums.Error==null)
{
GetAlbumsComplete(这是新的EntityResultArgs(albums.Entities));
}
其他的
{
GetAlbumsComplete(这是新的EntityResultArgs(albums.Error));
}
}
}),空);
这与Shawn Wildermuth使用相同的模式和类


提前感谢:)

您不需要再次从服务器加载所有内容,但需要将新相册添加到ObservableCollection中。到目前为止,您只将其添加到DomainContext。 您可以执行以下两个选项之一:

1) 使用将新相册直接添加到收藏中

collection.Add(somealbum);

2) 我假设您在
GetAlbumsComplete()
中填写ObservableCollection。只需再次执行该部分,这样ObservableCollection就会充满您的
DomainContext.Albums
的内容