我真的坚持这个。我在网上搜索了很多,但实际上没有任何帮助。在我看来,我有一个按钮和进度条,当用户点击按钮时它会做不同的工作,并在增加 CurrentProgress 之后。
但它最终只向用户显示100%的工作结果并不是我想要的。我希望每当 CurrentProgress 增加时它会显示并显示到视图中。
视图中的控件是:
<Button x:Name="Generate" Content="Generate" />
<ProgressBar Value="{Binding Path=CurrentProgress, Mode=OneWay}" Width="80" Height="15"/>
这是ViewModel中的代码
private int currentProgress;
public int CurrentProgress
{
get { return currentProgress; }
set
{
if (currentProgress == value)
return;
currentProgress = value;
NotifyOfPropertyChange(() => CurrentProgress);
}
}
List<Article> articles;
public void Generate()
{
foreach (var art in articles)
{
//[..]
//Insert article
inserted++;
Task.Factory.StartNew(() =>updateProgress(inserted));
}
}
private void updateProgress(int Analyzed)
{
if (Analyzed != 0)
{
int percentage = 100 * Analyzed / articles.Count;
CurrentProgress = percentage;
}
}
如何解决问题?提前全部感谢!
答案 0 :(得分:1)
把&#34;生成&#34;的全部内容放在一起。任务中的方法。然后,您不需要做任何特别的事情来更新进度,因为&#34; NotifyPropertyChanged&#34; WPF会在UI级别自动编组事件。 像这样:
Task.Factory.StartNew(() => {
foreach (var art in articles)
{
//[..]
//Insert article
inserted++;
updateProgress(inserted);
}
}