1

ユーザーが私のアプリケーションでページをシフトすると、単純なアニメーションはシフトする前にアイテムをフェードアウトする必要がありますが、それは機能せず、すぐにシフトに進みます。

コード:

        public PageClass()
        {
            BackKeyPress += OnBackKeyPressed;
        }

        void OnBackKeyPressed(object sender, CancelEventArgs e)
        {
            foreach (var control in ContentPanel.Children)
                MainPage.FadeOutObject(control);

            var translation = new TranslateTransform();

            PageTitle.RenderTransform = translation;

            var s = new Storyboard();
            Storyboard.SetTarget(s, translation);
            Storyboard.SetTargetProperty(s, new PropertyPath(TranslateTransform.YProperty));

            s.Children.Add(
                    new DoubleAnimation()
                    {
                        From = -300,
                        To = 0,
                        Duration = new Duration(TimeSpan.FromSeconds(2.0)),
                        EasingFunction = new PowerEase { EasingMode = EasingMode.EaseInOut }
                    });

            s.Begin();

            s.Completed += (object sd, EventArgs ea) =>
            {
                NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
            }; 
        }

さて、これは機能しません、それはすぐにMainPageに戻ります、誰かが手がかりを持っていますか?

4

1 に答える 1

3

e.Cancel前のページが自動的に処理されないように追加してみてください。どのページに移動するかはすでに指示されているためです。

void OnBackKeyPressed(object sender, CancelEventArgs e)
{
    e.Cancel = true;

    foreach (var control in ContentPanel.Children)
            MainPage.FadeOutObject(control);

    //...rest of your code
}
于 2012-10-22T18:41:37.897 に答える