在MVVM中更新ViewModel内容

时间:2014-05-05 15:05:48

标签: c# wpf xaml windows-phone-8 mvvm

我的XAML页面上有一个列表绑定到我的ViewModel。列表仅显示条目 - 没有要编辑或更新它们的功能(它们是从Server api中读取的)。

在应用程序栏中,我有一个用于重新加载列表的按钮(再次将请求发送到服务器)。

我必须为此“重新加载功能”做些什么?

我想要关注:

  • 删除现有的条目集合
  • 再次激活LoadData

我的问题是否有任何摘要? 由于我以前的现有收藏品,内存问题是什么?

1 个答案:

答案 0 :(得分:1)

如果您认为您的回调非常轻松,那么这样的事情会起作用。如果你认为很多物品回来可能很重,那么这可能不是最有效的方法,但仍然有效:

 public class YourViewModel
 {
     public ObservableCollection<YourDataType> YourCollection { get; set; } 

     public ICommand ReloadDataCommand { get; set; }

     public YourViewModel()
     {
         YourCollection = new ObservableCollection<YourDataType>();
         ReloadDataCommand = new DelegateCommand(ReloadData);
     }

     private void ReloadData()
     {
         //Get your new data;
         YourCollection = new ObservableCollection(someService.GetData());
         RaisePropertyChange("YourCollection");
         //Depending on how many items your bringing in will depend on whether its a good idea to recreate the whole collection like this. If its too big then you may be better off removing/adding these items as needed.
     }
 }

在XAML中:

     <Button Content="Reload" Command="{Binding ReloadDataCommand}" />
     <List ItemsSource="{Binding YourCollection}">
       <!-- All your other list stuff -->
     </List>

希望这有帮助