Загрузка данных в приложение WP7 silverlight и переходы - PullRequest
1 голос
/ 28 апреля 2011

Я создаю приложение WP7 Silverlight и использую ViewModel для хранения данных и в качестве текста данных для страниц.

Каждая PhonePage имеет свои собственные данные, и я вызываю App.ViewModel.LoadData.() в обработчике событий Page_Loaded.Существует ListBox, который показывает данные в ViewModel.

Я использую переход TurnstileTransition из набора инструментов Silverlight из Codeplex.(http://silverlight.codeplex.com/releases/view/60291)

ДОПОЛНИТЕЛЬНАЯ РАЗЪЯСНЕНИЕ Переход определяется как ресурс в App.xaml как:

<Style x:Key="TurnstileTransition" TargetType="phone:PhoneApplicationPage">
                <Setter Property="toolkit:TransitionService.NavigationInTransition">
                    <Setter.Value>
                        <toolkit:NavigationInTransition>
                            <toolkit:NavigationInTransition.Backward>
                                <toolkit:TurnstileTransition Mode="BackwardIn"/>
                            </toolkit:NavigationInTransition.Backward>
                            <toolkit:NavigationInTransition.Forward>
                                <toolkit:TurnstileTransition Mode="ForwardIn"/>
                            </toolkit:NavigationInTransition.Forward>
                        </toolkit:NavigationInTransition>
                    </Setter.Value>
                </Setter>
                <Setter Property="toolkit:TransitionService.NavigationOutTransition">
                    <Setter.Value>
                        <toolkit:NavigationOutTransition>
                            <toolkit:NavigationOutTransition.Backward>
                                <toolkit:TurnstileTransition Mode="BackwardOut"/>
                            </toolkit:NavigationOutTransition.Backward>
                            <toolkit:NavigationOutTransition.Forward>
                                <toolkit:TurnstileTransition Mode="ForwardOut"/>
                            </toolkit:NavigationOutTransition.Forward>
                        </toolkit:NavigationOutTransition>
                    </Setter.Value>
                </Setter>
            </Style>

И каждая страница имеет стиль, определенный как:

Style="{StaticResource TurnstileTransition}"

Все отлично работает.

Однако данные привязываются к списку ДО ТОГО, как завершился переход !!

Это выглядит ужасно!

Могу ли я обработать событие в END перехода (так что я загружаю данные здесь и связываю их), если да, то куда мне добавить обработчик событий ??

Могу ли я обработать событие при START перехода (поэтому я очищаю данные здесь), если да, то куда мне добавить обработчик событий ??

Предлагаете ли вы другое решение, которое я должен рассмотреть?

Как я могу добавить обработчик событий к завершенному событию Перехода, как называется объект перехода? И переход имеет 2 типа переходов.Могу ли я определить, какой тип (вперед или назад) перехода произошел и завершился?

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Попробуйте это (в контексте страницы, на которую вы переходите)

        var transition = TransitionService.GetNavigationInTransition(this); //This being the page with the associated navigation
        transition.EndTransition += transition_EndTransition;

...
        void transition_EndTransition(object sender, System.Windows.RoutedEventArgs e)
        {
            DataContext = ...;
        }

Я сделал это, чтобы получить более плавную анимацию, потому что в противном случае работа с БД, которую мне нужно было выполнить, нарушила плавность перехода, потому что он выполнялся слишком рано, если я запустил его в событии OnNavigatedTo '*' 1004 *

0 голосов
/ 28 апреля 2011

В переходе есть событие Completed, которое вы можете использовать для определения конца перехода.

Событие не запущено, но вы можете вызвать что-то эквивалентное этому, прежде чем перейти на страницу спереход.

...