【问题标题】:Loading data in WP7 silverlight application and transitions在 WP7 silverlight 应用程序和转换中加载数据
【发布时间】:2011-04-28 11:37:10
【问题描述】:

我正在制作一个 WP7 Silverlight 应用程序并使用 ViewModel 来存储数据并作为页面的数据上下文。

每个 PhonePage 都有自己的数据,我在 Page_Loaded 事件处理程序中调用 App.ViewModel.LoadData()。有一个 ListBox 显示 ViewModel 中的数据。

我使用 Codeplex 的 Silverlight 工具包中的 TurnstileTransition 过渡。 (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处处理事件吗(所以我在这里清除数据),如果可以,我应该在哪里添加事件处理程序??

您是否建议我必须考虑其他一些解决方案?

如何向过渡的已完成事件添加事件处理程序,过渡对象的名称是什么? 并且过渡有两种类型的过渡,我可以检测出哪种类型的(前进或后退)过渡发生并完成了吗?

【问题讨论】:

    标签: silverlight data-binding windows-phone-7 silverlight-toolkit transition


    【解决方案1】:

    试试这个(在您要导航到的页面的上下文中)

            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 '事件'中运行它,它执行得太早了

    【讨论】:

    • 这是我所指的确切问题..thanx,如果正确,将尝试并标记答案:)
    【解决方案2】:

    Transition 有一个 Completed 事件,您可以使用它来标识转换的结束。

    没有启动事件,但您可以在导航到带有转换的页面之前触发与此等效的事件。

    【讨论】:

    • 嗨,马特,请参阅上面的说明。还有可以从代码中访问的对象,或者我不知道如何获取该对象?请提出解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2011-03-28
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多