c # WPF Как показать мой индикатор выполнения во время загрузки окна xaml? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь отобразить мой индикатор выполнения во время загрузки моего окна WPF. Мне удалось заполнить индикатор выполнения, но он не отображается. Обратитесь к скриншотам, чтобы увидеть, что я имею в виду , показывающий ProgressBar, но когда окна полностью загружены , он показывает, когда загружены все компоненты окна. Это делает правильное поведение, которое я хочу, когда я ставлю несколько MessageBox в конце каждого метода для загрузки компонентов , как этот снимок экрана и этот снимок экрана , поэтому мой вопрос: как показать мой индикатор выполнения, покаокно 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");

    }

Я заполняю индикатор выполнения вот так в каждом методе, который вызывается для загрузки окна

1 Ответ

0 голосов
/ 09 октября 2019

Это то, как вы установили порядок, я думаю, что упорядочить его так должно решить:

 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...