2010-11-03 91 views
0

我是MVVM的新手,已经写了一个小应用程序来测试水域并熟悉模式。我的应用程序的主要功能需要很长时间才能得到某种用户反馈,而这个过程还在继续。将呼叫置于单独的线程并为进度条提供反馈的建议方式是什么?该函数的ViewModel代码如下。谢谢您的帮助。MVVM中的多线程/用户反馈

public DataView Data 
     { 
      get 
      { 
       return resultsView; 
      } 
      set 
      { 
       if (value == resultsView) 
       { 
        return; 
       } 
      resultsView = value; 

      RaisePropertyChanged("Data"); 
     } 
    } 

    private void SetData() 
    { 
     Data = RetrieveData.GetPartData(SelectedTeam, SelectedYear).DefaultView; 
    } 

    public RelayCommand GetData 
    { 
     get; 
     private set; 
    } 

    /// <summary> 
    /// Initializes a new instance of the MainViewModel class. 
    /// </summary> 
    public MainViewModel() 
    { 
     // Initializers for other part of ViewModel 
     // Teams = RetrieveData.GetTeams(); 
     // Years = RetrieveData.GetYears(); 

     GetData = new RelayCommand(SetData); 
    } 

回答

0

我不完全熟悉的MVVM多线程还,但这种联系似乎很做,能够:WPF Multithreading: Using the BackgroundWorker and Reporting the Progress to the UI. 现在,我会尝试是这样的:

worker.DoWork += delegate(object s, DoWorkEventArgs args) 
{ 
    Data = RetrieveData.GetPartData(SelectedTeam, SelectedYear).DefaultView; 
}; 
+0

也就是说几乎是我最终做的。我不明白为什么这会违反MVVM,但我仍然愿意接受。 – PlTaylor 2010-11-05 11:29:50