使用WPF和MVVM模式实现进度条(不使用BackgroundWorker)

时间:2015-05-15 07:04:39

标签: c# wpf mvvm progress-bar

我有一个基于MVVM设计模式的WPF应用程序。

我希望在应用程序中实现一个遵循MVVM模式的进度条。

我找到了一些使用background-worker类实现这个的解决方案。由于某些原因,我不允许使用后台工作者。

有人对如何实现这个有任何建议吗?

提前致谢

2 个答案:

答案 0 :(得分:1)

基础知识非常简单。

查看:

 <ProgressBar Value="{Binding ProgressValue}" />

视图模型:

 public double ProgressValue { get/set with INPC }

但剩下的挑战是以线程安全的方式从非阻塞进程设置ViewModels ProgressValue。

你的问题缺乏细节来帮助解决这个问题。

答案 1 :(得分:1)

我希望Task胜过背景工作者。无论如何,这是一个简单的进度条实现。

<ProgressBar Value="{Binding ProgressValue}" Maximum="100" Height="20" />

public MainViewModel()
{
    Task.Run(() =>
        {
            while (true)
            {
                ProgressValue++;
                Thread.Sleep(250);
            }
        });
    }

    public int ProgressValue
    {
        get { return _progressValue; }
        set { _progressValue = value; OnPropertyChanged(); }
    }
}