none
ListView 的 Transition 仅第一次生效 RRS feed

  • 问题

  • Xaml 代码:

    <Page x:Class="ListViewTransitionBug.MainPage"
          xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:local="using:ListViewTransitionBug"
          xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
          xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
          mc:Ignorable="d"
          Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <ListView x:Name="lvw">
                <ListView.ItemContainerTransitions>
                    <TransitionCollection>
                        <EntranceThemeTransition FromHorizontalOffset="100" />
                    </TransitionCollection>
                </ListView.ItemContainerTransitions>
            </ListView>
            <Button Grid.Row="1"
                    HorizontalAlignment="Center"
                    Content="添加"
                    Click="BtnAdd_Click" />
        </Grid>
    </Page>

    后台代码:

    using System;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    
    // “空白页”项模板在 http://go.microsoft.com/fwlink/?LinkId=391641 上有介绍
    
    namespace ListViewTransitionBug
    {
        /// <summary>
        /// 可用于自身或导航至 Frame 内部的空白页。
        /// </summary>
        public sealed partial class MainPage : Page
        {
            public MainPage()
            {
                this.InitializeComponent();
    
                this.NavigationCacheMode = NavigationCacheMode.Required;
            }
    
            /// <summary>
            /// 在此页将要在 Frame 中显示时进行调用。
            /// </summary>
            /// <param name="e">描述如何访问此页的事件数据。
            /// 此参数通常用于配置页。</param>
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                // TODO: 准备此处显示的页面。
    
                // TODO: 如果您的应用程序包含多个页面,请确保
                // 通过注册以下事件来处理硬件“后退”按钮:
                // Windows.Phone.UI.Input.HardwareButtons.BackPressed 事件。
                // 如果使用由某些模板提供的 NavigationHelper,
                // 则系统会为您处理该事件。
            }
    
            private void BtnAdd_Click(object sender, RoutedEventArgs e)
            {
                lvw.Items.Add(DateTime.Now.ToString());
            }
        }
    }

    仅在第一次点击按钮添加项时触发动画效果,之后再添加都是立即出现,没有动画效果了。请问一下这个是 bug 吗?

    2015年2月16日 15:27

答案

  • 您好,

    EntranceThemeTransition是在控件首次出现时对其提供动画转换行为. 所以我觉得不是Bug.

    对于这个问题, 您也可以参考下这个类似的帖子:
    https://social.msdn.microsoft.com/Forums/en-US/4995c8d5-1a49-46f0-b6cc-bc1e88feebde/entrancethemetransition-seems-to-only-work-once?forum=winappswithcsharp .

    新年快乐.

    ---Amy Peng


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 h82258652 2015年3月2日 11:00
    2015年2月20日 15:19
    版主
  • 你好,

    为了解决这个,一个可行的办法就是在父容器中删除控件之后重新添加。

    或者可以考虑用其他动画效果代替。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 h82258652 2015年3月2日 11:00
    2015年3月1日 1:22
    版主

全部回复

  • 有可能是 我测试看看
    2015年2月18日 10:17
  • 您好,

    EntranceThemeTransition是在控件首次出现时对其提供动画转换行为. 所以我觉得不是Bug.

    对于这个问题, 您也可以参考下这个类似的帖子:
    https://social.msdn.microsoft.com/Forums/en-US/4995c8d5-1a49-46f0-b6cc-bc1e88feebde/entrancethemetransition-seems-to-only-work-once?forum=winappswithcsharp .

    新年快乐.

    ---Amy Peng


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 h82258652 2015年3月2日 11:00
    2015年2月20日 15:19
    版主
  • 新年快乐。谢谢回答。那么要实现这种效果有什么好的解决方法吗?
    现在是使用ScrollViewer套StackPanel代替使用,每次更新集合的时候都同样处理到控件上,但是现在最大问题就是没法进行数据绑定,增量加载接口也没法用。
    2015年2月20日 17:58
  • 你好,

    为了解决这个,一个可行的办法就是在父容器中删除控件之后重新添加。

    或者可以考虑用其他动画效果代替。

    --James


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    • 已标记为答案 h82258652 2015年3月2日 11:00
    2015年3月1日 1:22
    版主