FlipView EventTrigger for the SelectionChanged event

本文关键字:SelectionChanged event the for EventTrigger FlipView | 更新日期: 2023-09-27 17:56:08

我正在开发通用应用程序。在一页上,我决定使用FlipView。我可以轻松地从代码隐藏中对 SelectionChanged 事件进行动画处理,但我只是好奇是否有办法仅使用 XAML 对此事件进行动画处理。(顺便说一句,UseTouchAnimationsForAllNavigation="True"不起作用)。所以,这是我正在做的事情的简化示例:

    <FlipView x:Name="MultipleItems">
              <FlipView.Triggers>
                <EventTrigger RoutedEvent="Selector.SelectionChanged">
                    <BeginStoryboard>
                        <Storyboard x:Name="ColorStoryboard">
                            //do stuff
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
              <FlipView.Triggers>
   </FlipView>

我认为这种使用方式 EventTrigger 很好(就 SelectionChanged 事件采用从 RoutedEventArgs 继承的参数而言),但它在导航到包含 FlipView 的页面时仍然给我运行时错误。

下一个错误是:

    WinRT information: Failed to assign to property 'Windows.UI.Xaml.EventTrigger.RoutedEvent'. [Line: 69 Position: 35]
   Additional information: The text associated with this error code could not be found.

我相信有办法正确分配该 RoutedEvent 属性,但我还没有找到它。我也不会为这么简单的事情使用行为。

谁能帮忙?

FlipView EventTrigger for the SelectionChanged event

您需要

在项目中安装 Microsoft.Xaml.Behaviors.Uwp.Managed。然后,UWP 项目中将支持该EventTrigger

然后在 XAML 中,按如下所示使用此包:

xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Core="using:Microsoft.Xaml.Interactions.Core"
xmlns:Media="using:Microsoft.Xaml.Interactions.Media"

现在,您可以像这样更改FlipView的背景颜色:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.Resources>
        <Storyboard x:Key="std" x:Name="std" >
            <ColorAnimation From="Red" To="Transparent" Duration="0:0:3" 
                            Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
                            Storyboard.TargetName="flipView"/>
        </Storyboard>
    </Grid.Resources>
    <FlipView x:Name="flipView" ItemsSource="{x:Bind flipviewCollection}">
        <Interactivity:Interaction.Behaviors>
            <Core:EventTriggerBehavior EventName="SelectionChanged">
                <Media:ControlStoryboardAction Storyboard="{StaticResource std}" />
            </Core:EventTriggerBehavior>
        </Interactivity:Interaction.Behaviors>
        <FlipView.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding ImageSource}" Stretch="None"/>
            </DataTemplate>
        </FlipView.ItemTemplate>
    </FlipView>
</Grid>

如您所见,我使用了EventTriggerBehavior,事件的名称是 SelectionChanged .