Winrt手机8.1 StackPanel可见性动画

时间:2015-08-17 09:50:17

标签: windows-runtime windows-phone-8.1

我有一个垂直stackpanel,其中有近{10} textblocks,其可见性随按钮点击而变化,我们是否可以在stackpanel意味着崩溃或可见的情况下应用动画显示动画,就像从顶部打开一样。

我不知道是否可能。或者很容易实现与否。

2 个答案:

答案 0 :(得分:1)

以下是使用AddDelete Transition Animation的工作示例: https://www.dropbox.com/l/9hcyf0V4q6qimmpvwal7no

<强>说明: 您可以应用各种动画来实现您想要的功能,并且它可以变得非常复杂。我发现最简单的解决方案是使用AddDeleteThemeTransition动画。首先,您需要在Windows.UI.Xaml:

下引用Media.Animation
using Windows.UI.Xaml.Media.Animation;

您需要维护一组文本块,因为相反改变了它们的可见性,您实际上会从堆栈面板中完全删除它们。

模块级变量:

List<TextBlock> textblocks = new List<TextBlock>();

在这里,您可以以编程方式将文本框添加到列表中。

        Transition addDelete = new AddDeleteThemeTransition();
        for (int i = 1; i < 10; i++)
        {
            TextBlock textBlock = new TextBlock();
            textBlock.Transitions = new TransitionCollection();
            textBlock.Transitions.Add(addDelete);
            textBlock.Text = "Test Textblock " + i;
            //set font size, style, etc...
            textblocks.Add(textBlock);
        }

在文本块上添加AddDeleteThemeTransition后,您可以执行以下操作:

    private async Task showTextBlocks()
    {
        foreach (TextBlock tb in textblocks)
        {
            stackPanel.Children.Add(tb);
            await Task.Delay(50); //If you want them to stagger on... remove if not to stagger
        }
    }

    private async Task hideTextBlocks()
    {
        //remove the textblocks in reverse order
        for (int i = textblocks.Count - 1; i >= 0; i--)
        {
            TextBlock tb = textblocks[i];
            stackPanel.Children.Remove(tb);
            await Task.Delay(50); //if you want them to stagger off... remove if not to stagger
        }
    }

因为textblock元素具有应用于它们的AddDeleteThemeTransition转换,所以当它们从堆栈面板中添加或删除时,它们将动画化。

这会给动画一个动画......不是很多控制它,但是你可以玩它来看看它是否能满足你的需要。

有关其他转换类型的列表,您可以查看Microsoft文档here.

答案 1 :(得分:0)

我相信你只需使用xaml即可达到你想要的效果。故事板和EventTriggerBehavior是您所需要的。如果您感兴趣,我可以将代码放在一起。