在Windows Phone中保留AnList LongListSelectorItem前景

在过去的几天里,我一直在努力为持有物品的情况获得一个漂亮的前景动画效果。

Item模板如下所示:

               

我尝试了多种方法,但我没有设法从其中任何一个获得结果。

我遇到了这个很好的MSDNpost ,其中显示了多个示例,但它们都不能与我的案例完全匹配,因为我希望在DataTemplate设置TextBlock Foregrounds动画,引用TextBlock ,所以我在访问特定控件时遇到问题模板。

例如,我尝试了这种方法:

      

然后从Hold事件处理程序触发它:

 var storyboard = Resources["ItemHoldAnimation"] as Storyboard; storyboard.Begin(); 

但它失败了,因为TargetName="SubjectTextBlock"无法访问,因为它在DataTemplate

我也尝试过一种我用WPF和EventTriggers找到的方法,如下所示:

       ...  

但它给了COMexception……

 MS.Internal.WrappedException: Error HRESULT E_FAIL has been returned from a call to a COM component. ---> System.Exception: Error HRESULT E_FAIL has been returned from a call to a COM component. 

LongListSelector项被保持时,很多只是动画字体…

解决这个问题的方法是什么?

您应该在DataTemplate中定义Storyboard,还需要修改目标proeprty,因为ColorAnimation适用于Color属性而不是画笔。 最后还需要设置IsZoomEnabled="False" ,因为否则ContextMenu实现会获取元素的快照并在上下文菜单打开时显示此静态图像,因此动画将不可见(另一种方法是修改源代码ContextMenu在动画完成后延迟打开上下文菜单)这样的事情应该有效:

                        

这是hold方法:

 private void OnLongListSelectorItemHold(object sender, GestureEventArgs e) { FrameworkElement fe = sender as FrameworkElement; var storyboard = fe.Resources["ItemHoldAnimation"] as Storyboard; storyboard.Begin(); } private void ContextMenu_OnClosed(object sender, RoutedEventArgs e) { ContextMenu eleme=sender as ContextMenu; FrameworkElement fe = eleme.Owner as FrameworkElement; var storyboard = fe.Resources["MenuClosedAnimation"] as Storyboard; storyboard.Begin(); }