2016-07-08 3 views
1

Я разрабатываю универсальное приложение. На одной странице я решил использовать FlipView. Я могу легко анимировать событие SelectionChanged из кода, но мне просто интересно, есть ли способ анимировать это событие, используя только XAML. (BTW, UseTouchAnimationsForAllNavigation = «True» не работает). Итак, вот упрощенный пример того, что я делаю:FlipView EventTrigger для события SelectionChanged

<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 свойство правильно, но я не нашел еще. Также я не хочу использовать поведение для такой простой вещи.

Может ли кто-нибудь помочь?

ответ

2

Вам необходимо установить Microsoft.Xaml.Behaviors.Uwp.Managed в свой проект. Затем EventTrigger будет поддерживаться в проекте UWP.

Затем в 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.

Смежные вопросы