[WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завершения
От: AHgpeu Украина  
Дата: 24.05.11 07:57
Оценка:
Я заметил что у меня долго перерисовывается форма.
Т.е. когда я перехожу от одной формы к другой — программа как бы зависает на несколько сек. (в зависимости от "сложности" формы — от 3 до 10 сек.)
И только через это время показывается нужная форма.
На это время я хочу показать красивую анимационную форму "Please Wait"
Которая показывалась бы перед началом перерисовки формы и пряталась бы после окончательной перерисовки.
В идеале — как только "Please Wait" прячется — тут же (без лишних задержек) должна показаться новая форма. Ну или сначала показаться форма — а потом спрятаться "Please Wait". Можно и так.

Непонятно одно. Когда вызывать Show/Hide "Please Wait" ???

у меня есть основная форма mainView с фреймом. Туда через
mainView.frMain.Navigate(aPage);

загружается нужная форма (aPage).
Я заметил, что после этого вызова
mainView.frMain.Navigate(aPage);

проходит какое-то время ДО того как вызовется метод (в *.xaml.cs)
private void mainRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)

где mainRoot это корневой Grid на форме (aPage), которая загружается

затем, когда
private void mainRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)

отработает — снова какая-то задержка в несколько секунд — и только после этого форма показывается на экране.

Подскажите, КОГДА мне нужно вызывать Show/Hide "Please Wait" ???
Как узнать что форма полностью перерисовалась?
Спасибо!
Re: [WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завершен
От: Codechanger Россия  
Дата: 25.05.11 07:29
Оценка: +1
Здравствуйте, AHgpeu, Вы писали:

AH>Я заметил что у меня долго перерисовывается форма.

AH>Т.е. когда я перехожу от одной формы к другой — программа как бы зависает на несколько сек. (в зависимости от "сложности" формы — от 3 до 10 сек.)
AH>И только через это время показывается нужная форма.
AH>На это время я хочу показать красивую анимационную форму "Please Wait"
AH>Которая показывалась бы перед началом перерисовки формы и пряталась бы после окончательной перерисовки.
AH>В идеале — как только "Please Wait" прячется — тут же (без лишних задержек) должна показаться новая форма. Ну или сначала показаться форма — а потом спрятаться "Please Wait". Можно и так.

AH>Непонятно одно. Когда вызывать Show/Hide "Please Wait" ???


AH>у меня есть основная форма mainView с фреймом. Туда через

AH>
mainView.frMain.Navigate(aPage);

AH>загружается нужная форма (aPage).
AH>Я заметил, что после этого вызова
AH>
mainView.frMain.Navigate(aPage);

AH>проходит какое-то время ДО того как вызовется метод (в *.xaml.cs)
AH>
private void mainRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)

AH>где mainRoot это корневой Grid на форме (aPage), которая загружается

AH>затем, когда

AH>
private void mainRoot_Loaded(object sender, System.Windows.RoutedEventArgs e)

AH>отработает — снова какая-то задержка в несколько секунд — и только после этого форма показывается на экране.

AH>Подскажите, КОГДА мне нужно вызывать Show/Hide "Please Wait" ???

AH>Как узнать что форма полностью перерисовалась?
AH>Спасибо!

Ну скорее всего дело не в долгой перерисовке, а в долгой обработке данных.
Re[2]: [WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завер
От: AHgpeu Украина  
Дата: 26.05.11 09:30
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Ну скорее всего дело не в долгой перерисовке, а в долгой обработке данных.


Пусть даже так. Но это не решает проблему. Данные обрабатываются все равно на стороне UI, я так понимаю?
Или В чем выражается эта "обработка данных"?

AH>Подскажите, КОГДА мне нужно вызывать Show/Hide "Please Wait" ???
Re[3]: [WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завер
От: Codechanger Россия  
Дата: 26.05.11 12:47
Оценка:
Здравствуйте, AHgpeu, Вы писали:

AH>Здравствуйте, Codechanger, Вы писали:


C>>Ну скорее всего дело не в долгой перерисовке, а в долгой обработке данных.


AH>Пусть даже так. Но это не решает проблему. Данные обрабатываются все равно на стороне UI, я так понимаю?

AH>Или В чем выражается эта "обработка данных"?

AH>>Подскажите, КОГДА мне нужно вызывать Show/Hide "Please Wait" ???


Ну скорее всего у вас в коде формы происходят какие-то долгие вычисления, подгрузки данных и т.д. Более кошерно это в отдельный поток и кидать события о начале/окончании обработки данных.
Без кода сложно сказать, может, вы при открытии формы число Пи считаете до миллионного знака после запятой. Причем в том же потоке.
Re: [WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завершен
От: notacat  
Дата: 26.05.11 13:02
Оценка:
начало, наверное, по событию Frame.Navigating: http://msdn.microsoft.com/en-us/library/system.windows.controls.frame.navigating.aspx
Вообще, посмотрите на события класса Frame, там же все есть, даже NavigationProgress. Только показать это в каком-нибудь статус-баре
Re: [WPF] момент НАЧАЛА перерисовки формы и ПОЛНОГО завершен
От: Vladek Россия Github
Дата: 27.05.11 14:08
Оценка:
Здравствуйте, AHgpeu, Вы писали:

AH>Я заметил что у меня долго перерисовывается форма.


Сначала профайлер запустите — обнаружите свой код, который тормозит отображение "формы".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.