动画从LongListSelector中删除项目

时间:2012-11-25 09:42:25

标签: c# xaml animation triggers windows-phone

所以我有一个视图模型绑定到一组自定义对象,这些对象具有一些实现NotifyPropertyChanged的属性(Name,Size等),因此LongListSelector会相应地更新。

现在我想为LongListSelector添加一些动画,它会在项目添加时淡入项目,并在项目被删除时淡出。当Grid.Loaded触发时,我设法让添加动画工作,所以我想我也可以在Grid.Unload上调用反向动画(淡出),但是我没有成功。

我看过: Grid.Unload(由于某些原因从不触发),Grid.LayoutUpdated(触发太多次), 触发PropertyChangedTrigger(我想如果我将它绑定到像“Remove”这样的属性,那么当该属性设置为true时我可以设置动画,但是仍然坚持如何实现它。但是,这似乎是我在这个阶段的最佳选择),样式EventTrigger(但没有事件是我正在寻找的。也许我可以为LongListSelector创建一个新事件,但这需要更多时间来创建一个继承它的控件。)

所以我想知道还有哪些其他选择?或者,如果有人遇到类似的情况,可以分享一些知识!

编辑 - 这适用于Windows Phone应用程序,因此我无法使用某些类 编辑2 - 为了澄清,我可以为网格制作故事板并降低不透明度但是我的代码方式,一种方法处理项目的删除,无法找到网格以开始该故事板。我之前也坚持过这个问题但决定改变我的实现以解决另一个问题。就目前而言,我的LongListSelector的ItemTemplate绑定到PhoneApplicationResource(相当于一个Resource)DataTemplate,我没有运气在这个模板中找到网格。
编辑3 - 刚刚访问DataTriggers并且似乎进展顺利:

           <Custom:Interaction.Triggers>
                <ic:DataTrigger Binding="{Binding IsDeleted}" Value="true">
                    <eim:ControlStoryboardAction Storyboard="{StaticResource fade}"/>
                </ic:DataTrigger>
            </Custom:Interaction.Triggers>

IsDeleted正在工作,因为我在另一个绑定中测试它以查看其值,但是当我运行上面的代码时,我得到一个debug.break()错误。它只在我运行上面的代码时出现。这是我的故事板供参考:

                <Storyboard x:Name="fade">
                    <DoubleAnimation Storyboard.TargetName="grid" Storyboard.TargetProperty="Height" From="95" To="0" Duration="0:0:1" SpeedRatio="1" />
                    <DoubleAnimation Storyboard.TargetName="grid" Storyboard.TargetProperty="Opacity" From="1.0" To="0" Duration="0:0:1" SpeedRatio="1" />
                </Storyboard>

注意:两者都位于PhoneApplicationPage.Resources网格中的DataTemplate中,只有故事板位于Grid.Resources中,如下所示:

<PhoneApplicationPage.Resources>
     <DataTemplate>
          <Grid>
               //DataTrigger here

               <Grid.Resources>
                  // Storyboard here
               </Grid.Resources>
          </Grid>
     </DataTemplate>
</PhoneApplicationPage.Resources>

感谢。

0 个答案:

没有答案