首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变UWP FlipView

改变UWP FlipView
EN

Stack Overflow用户
提问于 2017-03-22 18:09:39
回答 2查看 976关注 0票数 1

在UWP Flipview控件中更改图像时,是否可以更改动画效果?与其滑动,我更喜欢交叉褪色效果。

我不知道该怎么做,但我想确认一下。任何帮助都是非常感谢的。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-22 19:09:55

您应该能够在后面的代码中手动覆盖动画。首先,使用UseTouchAnimationsForAllNavigation="False“禁用内置动画。

代码语言:javascript
复制
    <FlipView x:Name="FlipView" UseTouchAnimationsForAllNavigation="False" SelectionChanged="Selector_OnSelectionChanged" >
        <FlipView.Items>
            <Grid Background="Red"></Grid>
            <Grid Background="Blue"></Grid>
            <Grid Background="Green"></Grid>
        </FlipView.Items>
    </FlipView>

然后,在代码背后运行故事板:

代码语言:javascript
复制
    private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.AddedItems.Count <= 0) return;
        if (e.RemovedItems.Count <= 0) return;

        var newSelectedItem = FlipView.ItemContainerGenerator.ContainerFromItem(e.AddedItems[0]) as FlipViewItem;
        var previousSelectedItem = FlipView.ItemContainerGenerator.ContainerFromItem(e.RemovedItems[0]) as FlipViewItem;

        if (newSelectedItem == null) return;
        if (previousSelectedItem == null) return;

        var duration = new Duration(TimeSpan.FromMilliseconds(500));

        var hideAnimation = new DoubleAnimation
        {
            From = 1.0,
            To = 0.0,
            AutoReverse = false,
            Duration = duration
        };

        var hideSb = new Storyboard();
        hideSb.Children.Add(hideAnimation);
        Storyboard.SetTargetProperty(hideSb, "Opacity");
        Storyboard.SetTarget(hideSb, previousSelectedItem);

        hideSb.Begin();

        var showAnimation = new DoubleAnimation
        {
            From = 0.0,
            To = 1.0,
            AutoReverse = false,
            Duration = duration
        };

        var showSb = new Storyboard();
        showSb.Children.Add(showAnimation);
        Storyboard.SetTargetProperty(showSb, "Opacity");
        Storyboard.SetTarget(showSb, newSelectedItem);

        showSb.Begin();
    }
票数 2
EN

Stack Overflow用户

发布于 2017-03-22 18:55:06

没有进行彻底的检查,但是在默认模板(https://msdn.microsoft.com/en-us/library/windows/apps/mt299124.aspx)中有一个用于项目的水平堆栈面板和一个滚动查看器,所以我不知道如何做到这一点。

就我个人而言,我认为当用户按下按钮或其他东西时,只编写一个自定义控件就更容易了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42959567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档