2011-01-31 99 views
0

我正在为我的应用程序使用Silverlight 4和MVVM模式。我有一个列表框绑定到一个页面,说one.xaml,它的视图模型是oneviewmodel.cs。这是我加载我的相册集合的页面。我在那个页面上有一个按钮,弹出一个页面来添加一个新的相册。说那个页面是two.xaml,它的viewmodel是twoViewModel.cs。在这个页面上我叫RIA服务: -ObservableCollection <someentity>不刷新

context.albums.add(somealbum); 

,并提交changes.The专辑被添加,我可以看到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); 

这是使用相同的模式和类肖恩Wildermuth。

感谢提前:)

回答

1

你不需要再次加载一切从服务器,但你需要新专辑添加到您的ObservableCollection。到目前为止,您只能将其添加到DomainContext。 你可以做以下两个选项之一:

1)直接添加新专辑的收集与

collection.Add(somealbum); 

2)我假设你填写的ObservableCollection在GetAlbumsComplete()。只需再次执行该部分,以便ObservableCollection充满了您的DomainContext.Albums的内容。

相关问题