故事板 - 从代码背后动画网格

时间:2014-04-09 09:00:37

标签: animation storyboard windows-store-apps windows-8.1

我的屏幕左侧需要一个可以滑入和滑出的MenuBar。由于这个应用程序是crossplattform,它应该在左侧,而不是像Bottom上的常用ApplicationBar或Top上的NavigationBar。

到目前为止我所拥有的是:

private bool isTapped = false;
        private void TEST_TAP(object sender, TappedRoutedEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("TAP");

            Storyboard s = new Storyboard();

            DoubleAnimation doubleAni = new DoubleAnimation();

            doubleAni.To = -30;
            if (isTapped) doubleAni.To = 0;

            doubleAni.Duration = new Duration(TimeSpan.FromMilliseconds(500));

            Storyboard.SetTarget(doubleAni, LOGO);
            Storyboard.SetTargetProperty(doubleAni, "(UIElement.RenderTransform).(TranslateTransform.XProperty)");

            s.Children.Add(doubleAni);
            s.Begin();
        }

我要移动的栏是网格或应该是类似的东西。但这甚至无法移动单个图像。我用Google搜索了一下,用"(UIElement.RenderTransform).(TranslateTransform.XProperty)"替换了"(Canvas.Left)"。这不会崩溃但也不会移动任何其他东西。 任何想法或解决方案?

修改 好吧,我玩了很多,现在我知道(并测试过)"(Canvas.Left)"仅适用于Canvas。好极了。 我的应用程序看起来像这样:Scrollview(水平)和内部是一个带有列的Grid,用于显示不同的内容。最左边的列包含另一个网格,我想要移出屏幕并再次返回。但是如何使用Storyboard-animation移动网格?

如果有人想到采用不同的方式做到这一点,如果它以任何方式运作,我都会感到非常高兴。

EDIT2: 它似乎是使用Storyboard.SetTargetProperty(doubleAni, "(UIElement.RenderTransform).(CompositeTransform.TranslateX)");的方式,但它一直在崩溃= /

1 个答案:

答案 0 :(得分:0)

在使用此转换之前,您需要添加它:

Storyboard s = new Storyboard();

DoubleAnimation doubleAni = new DoubleAnimation();

doubleAni.To = to;
doubleAni.From = from;
doubleAni.Duration = new Duration(TimeSpan.FromMilliseconds(250));

// THIS LINE IS NEW
NaviBar.RenderTransform = new CompositeTransform();

Storyboard.SetTarget(doubleAni, NaviBar);
Storyboard.SetTargetProperty(doubleAni, "(UIElement.RenderTransform).(CompositeTransform.TranslateX)");

s.Children.Add(doubleAni);
s.Begin();

这就是诀窍。它仍然不是我想要的功能,但最难的部分 - 动画 - 现在可以使用。