代码之家  ›  专栏  ›  技术社区  ›  Carlo

Windows Phone 7导航动画

  •  4
  • Carlo  · 技术社区  · 14 年前

    我试图在离开页面时制作动画,但得到以下错误:

    无法解析指定对象上的TargetProperty(uiElement.renderTransform)。(CompositeTransform.TranslateX)。

    我从一本书中复制了代码,我测试了这本书的样本代码,它可以工作,但我不能让它在我的应用程序上工作。有什么想法吗?这是我的代码:

    XAML:

    <phone:PhoneApplicationPage.Resources>
            <Storyboard x:Name="HidePage" Completed="HidePage_Completed">
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="phoneApplicationPage">
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-480"/>
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="phoneApplicationPage">
                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                    <EasingDoubleKeyFrame KeyTime="0:0:1" Value="-800"/>
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
    <phone:PhoneApplicationPage.Resources>
    

    C.*

    protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        base.OnNavigatingFrom(e);
    
        if (this.UriToNavigateTo == null)
        {
            e.Cancel = true;
            UriToNavigateTo = e.Uri;
            this.HidePage.Begin();
        }
        else
        {
            UriToNavigateTo = null;
        }
    }
    

    谢谢!

    2 回复  |  直到 13 年前
        1
  •  3
  •   Lukasz Madon    13 年前

    您忘记设置compositeTransform对象,它定义了您正在使用的转换类型。

    <phone:PhoneApplicationPage.RenderTransform>
        <CompositeTransform/>
    </phone:PhoneApplicationPage.RenderTransform>
    
        2
  •  6
  •   Juliana Peña    14 年前

    位于的Silverlight工具包 http://silverlight.codeplex.com/ 现在包括使用TransitionFrame控件的Windows Phone 7页面动画。您可以在这里阅读更多信息: http://blogs.msdn.com/b/delay/archive/2010/11/02/mo-controls-mo-controls-mo-controls-announcing-the-second-release-of-the-silverlight-for-windows-phone-toolkit.aspx

    基本上,它通过在app.xaml.cs中将rootframe设置为transitionframe来工作:

    RootFrame = new TransitionFrame();

    然后为每个页面设置导航转换:

    <toolkit:TransitionService.NavigationInTransition>
        <toolkit:NavigationInTransition>
            <toolkit:NavigationInTransition.Backward>
                <toolkit:TurnstileTransition Mode="BackwardIn"/>
            </toolkit:NavigationInTransition.Backward>
            <toolkit:NavigationInTransition.Forward>
                <toolkit:TurnstileTransition Mode="ForwardIn"/>
            </toolkit:NavigationInTransition.Forward>
        </toolkit:NavigationInTransition>
    </toolkit:TransitionService.NavigationInTransition>
    <toolkit:TransitionService.NavigationOutTransition>
        <toolkit:NavigationOutTransition>
            <toolkit:NavigationOutTransition.Backward>
                <toolkit:TurnstileTransition Mode="BackwardOut"/>
            </toolkit:NavigationOutTransition.Backward>
            <toolkit:NavigationOutTransition.Forward>
                <toolkit:TurnstileTransition Mode="ForwardOut"/>
            </toolkit:NavigationOutTransition.Forward>
        </toolkit:NavigationOutTransition>
    </toolkit:TransitionService.NavigationOutTransition>