C# 在MVVM中更新ViewModel内容

C# 在MVVM中更新ViewModel内容,c#,wpf,xaml,windows-phone-8,mvvm,C#,Wpf,Xaml,Windows Phone 8,Mvvm,我的XAML页面上有一个列表绑定到我的ViewModel。该列表仅显示条目-没有编辑或更新它们的功能(它们是从服务器api读取的) 在应用程序栏中,我有一个按钮用于重新加载列表(再次向服务器发送请求) 我必须为这个“重新加载功能”做什么 我想到以下几点: 删除现有的“我的条目”集合 再次激发加载数据 我的问题有什么小片段吗? 由于我以前的收藏而导致的内存问题是什么?如果您认为回调会很轻,那么类似的方法就可以了。如果您认为它可能很重,并且有很多物品要返回,那么这可能不是最有效的方法,但仍然有效

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

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

我必须为这个“重新加载功能”做什么

我想到以下几点:

  • 删除现有的“我的条目”集合
  • 再次激发加载数据
我的问题有什么小片段吗?
由于我以前的收藏而导致的内存问题是什么?

如果您认为回调会很轻,那么类似的方法就可以了。如果您认为它可能很重,并且有很多物品要返回,那么这可能不是最有效的方法,但仍然有效:

 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.
     }
 }
公共类YourViewModel
{
公共ObservableCollection YourCollection{get;set;}
公共ICommand重新加载数据命令{get;set;}
公共视图模型()
{
YourCollection=新的ObservableCollection();
ReloadDataCommand=新的DelegateCommand(ReloadData);
}
私有void重载数据()
{
//获取你的新数据;
YourCollection=newObservableCollection(someService.GetData());
RaisePropertyChange(“您的收藏”);
//根据你带来的物品数量,这取决于像这样重新创建整个收藏是否是个好主意。如果太大,你最好根据需要删除/添加这些物品。
}
}
在XAML中:

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


希望这有帮助取决于很多事情。您的列表是可观察的集合吗?列表属性是否在属性更改时通知?您是否正在清除列表并在LoadData中重新加载或替换为新列表?如果是被动列表(即,无法编辑/更新),您可以在后台轮询服务器,并在更新准备就绪时闪烁消息。