我是MVVM的新手,并编写了一个小应用程序来测试水域并熟悉模式。我的应用程序的主要功能需要很长时间才能获得某些用户反馈,而这些反馈正在继续进行。建议的方法是将呼叫置于单独的线程中并为进度条提供反馈?该函数的ViewModel代码如下。谢谢你的帮助。
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 :(得分: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;
};