2013-04-23 2 views
2

Мое намерение состоит в том, чтобы, когда пользователь нажимает кнопку, чтобы перейти на другую страницу, он увидит прогресс, пока другая страница не будет полностью загружена.Отображение прогрессирования во время навигации между страницами

Я нашел много учебников по теме, но все они используют код позади. Я хочу иметь возможность использовать код (по возможности). В настоящее время я использую MvvmLight с ViewModelLocater.

Я уже сделал фиктивную сетку в своих представлениях, которая может отображать Progressring, и я привязал ее активное и видимое свойство к моим режимам просмотра.

<Grid Background="Transparent" Visibility="{Binding LoadCircleVisibility}" Height="{Binding HeigthScreen}" Width="{Binding WidthScreen}" > 
      <ProgressRing Height="50" Width="50" IsActive="{Binding ProgressRingActive}" Visibility="{Binding ProgressRingVisibility}"></ProgressRing> 
     </Grid> 

Я могу Allready показать это, когда я получаю данные из службы WCF, например, но не тогда, когда пользователь переходит на другую страницу.

На данный момент я пытаюсь сделать это с помощью сообщений, но я не уверен, где я должен поставить сообщение, которое сделает мой прогресс видимым.

Мое сообщение всегда будет проходить через этот метод, чтобы установить правильные значения для progressring:

private void ProggressBarVisible(bool visible) 
    { 
     if (visible) 
     { 
      ProgressRingVisibility = Visibility.Visible; 
      LoadCircleVisibility = Visibility.Visible; 
     } 
     else 
     { 
      ProgressRingVisibility = Visibility.Collapsed; 
      LoadCircleVisibility = Visibility.Collapsed; 
     } 
     ProgressRingActive = visible; 
    } 

Но когда я хочу, чтобы перейти на другую страницу нет progressring.

Итак, вопрос в том, как я могу показать прогрессирование, в то время как mvvmlight загружает новую страницу.

Edit: частичное решение:

Причина моя навигация была медленнее, и заперла uithread потому, что он должен был Buid всей страницы. Я изменил это, убедившись, что все методы и логика являются ut в другом потоке, это гарантирует, что мой uithread продолжается немедленно, и я могу отображать loadcircle на моей второй странице, пока он выполняет логику и методы.

ответ

0

Я не знаю, как это сделать без кода позади Вы можете добавить панель корня в свое приложение и поместить туда специальный элемент управления. Этот настраиваемый элемент управления предназначен только для показа/скрытия прелоадера. И когда вы выгружаете 1-ю страницу (или другое событие), вы увидите пользовательский предварительный загрузчик; и когда вы закончите загрузку 2-й страницы, вы скроете пользовательский предварительный загрузчик.

+0

Да, я прочитал что-то похожее на это, но я не узнал, как я смог бы достичь этого, не используя код, и viewmodellocater, чтобы «получить» мои представления – Landvis

Смежные вопросы