我正在为我的应用程序使用Silverlight 4和MVVM模式。我有一个绑定到一个页面的列表框说one.xaml
,它的viewmodel是oneviewmodel.cs
。这是我加载相册集的页面。我在该页面上有一个按钮,弹出一个页面以添加新专辑。假设该页面为two.xaml
,并且其viewmodel为twoViewModel.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);
这使用与Shawn Wildermuth相同的模式和类。
提前致谢:)
答案 0 :(得分:1)
您无需再次从服务器加载所有内容,但需要将新专辑添加到ObservableCollection中。到目前为止,您只将它添加到DomainContext。 您可以执行以下两个选项之一:
1)使用
将新专辑直接添加到集合中collection.Add(somealbum);
或
2)我假设您在GetAlbumsComplete()
中填写了ObservableCollection。只需再次执行该部分,以便ObservableCollection填充DomainContext.Albums
的内容。