c#WPF如何在加载xaml窗口时显示进度条?

时间:2019-10-09 08:12:30

标签: c# wpf progress-bar

我正在加载WPF窗口时显示我的进度栏。我成功填写了进度条,但未显示。请参阅屏幕快照以了解我的意思showingProgressBar but when the windows has loaded completly,它是在加载窗口的每个组件时显示的。当我在每个方法的末尾放置一些MessageBox来加载组件like this screenshot和这个screenshot时,它正在执行正确的行为,所以我的问题是如何在xaml窗口加载时显示进度条? 任何帮助将不胜感激。

预先感谢

   private void DoWorkButton_Click(object sender, RoutedEventArgs e)
       {

             testProgressBar.Visibility = Visibility.Visible;
              ProgressTextblock.Visibility = Visibility.Visible;
               BackgroundWorker worker = new BackgroundWorker();
               worker.RunWorkerCompleted += worker_RunWorkerCompleted;
                worker.WorkerReportsProgress = true;
                worker.DoWork += worker_doWork;
                worker.ProgressChanged += worker_ProgressChanged;
                 worker.RunWorkerAsync();
    }

    private void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        testProgressBar.Value = e.ProgressPercentage;
        ProgressTextblock.Text = (string)e.UserState;
    }

    private void worker_doWork(object sender, DoWorkEventArgs e)
    {
        var worker = sender as BackgroundWorker;
        worker.ReportProgress(0, String.Format("Chargement des composants de la fenetre"));



    }

    private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        MessageBox.Show("Fenetre chargée normalement");

    }

我在调用加载窗口的每种方法中填充进度条like this

1 个答案:

答案 0 :(得分:0)

这是您设置订单的方式,我认为像这样排序应该可以解决该问题:

 private void DoWorkButton_Click(object sender, RoutedEventArgs e)
   {
         testProgressBar.Visibility = Visibility.Visible;
         ProgressTextblock.Visibility = Visibility.Visible;
         BackgroundWorker worker = new BackgroundWorker();
         worker.WorkerReportsProgress = true; 
         worker.DoWork += worker_doWork;                         
         worker.ProgressChanged += worker_ProgressChanged;
         worker.RunWorkerCompleted += worker_RunWorkerCompleted;
         worker.RunWorkerAsync();
}