2014-12-18 2 views
2

Мне нужно обновить мое приложение на WPF до WinPhone 8.1 на базе WinRT, но я не знаю, как работать с «новым API» для триггеров на новом WinRT ...Как обновить от Style.Triggers до Interaction.Behaviors?

Позвольте мне объяснить!

Как я могу написать этот код в WPF:

<Style.Triggers> 
    <DataTrigger Binding="{Binding Path=IsInBubbleGroup}" Value="True"> 
     <DataTrigger.EnterActions> 
      <BeginStoryboard> 
       <Storyboard> 
        <thriple:EasingDoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" Duration="0:0:0.2" Equation="CubicEaseInOut" To="1.1" /> 
      <thriple:EasingDoubleAnimation 
      Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" 
      Duration="0:0:0.2" 
      Equation="CubicEaseInOut" 
      To="1.1" 
      /> 
     </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.EnterActions> 
    <DataTrigger.ExitActions> 
     <BeginStoryboard> 
     <Storyboard> 
      <thriple:EasingDoubleAnimation 
      Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" 
      Duration="0:0:0.1" 
      Equation="CubicEaseInOut" 
      To="1" 
      /> 
      <thriple:EasingDoubleAnimation 
      Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" 
      Duration="0:0:0.1" 
      Equation="CubicEaseInOut" 
      To="1" 
      /> 
     </Storyboard> 
     </BeginStoryboard> 
    </DataTrigger.ExitActions> 
    </DataTrigger> 
</Style.Triggers> 

для WP8.1 на основе WinRT с помощью Interaction.Behaviors?

Моя попытка была его:

<i:Interaction.Behaviors> 
    <c:DataTriggerBehavior Binding="{Binding Path=IsInBubbleGroup}" Value="True"> 
     <c:DataTriggerBehavior.Actions> 
      <BeginStoryboard> 
       <Storyboard> 
        <!--EnterActions--> 

        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" Duration="0:0:0.2" To="1.1"> 
         <DoubleAnimation.EasingFunction> 
          <CubicEase EasingMode="EaseInOut" /> 
         </DoubleAnimation.EasingFunction> 
        </DoubleAnimation> 

        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Duration="0:0:0.2" To="1.1"> 
         <DoubleAnimation.EasingFunction> 
          <CubicEase EasingMode="EaseInOut" /> 
         </DoubleAnimation.EasingFunction> 
        </DoubleAnimation> 

        <!--ExitActions--> 

        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" Duration="0:0:0.1" To="1"> 
         <DoubleAnimation.EasingFunction> 
          <CubicEase EasingMode="EaseInOut" /> 
         </DoubleAnimation.EasingFunction> 
        </DoubleAnimation> 

        <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Duration="0:0:0.1" To="1"> 
         <DoubleAnimation.EasingFunction> 
          <CubicEase EasingMode="EaseInOut" /> 
         </DoubleAnimation.EasingFunction> 
        </DoubleAnimation> 

       </Storyboard> 
      </BeginStoryboard>      
     </c:DataTriggerBehavior.Actions> 
    </c:DataTriggerBehavior> 
</i:Interaction.Behaviors> 

, но я не знаю, как я могу создать войти и выйти из действий .. Помогите мне пожалуйста

ответ

1

Это может показаться достаточно простой ответ, но не могу вы просто создать триггер так:

<c:DataTriggerBehavior Binding="{Binding Path=IsInBubbleGroup}" Value="True"> 
.... 
</c:DataTriggerBehavior> 

, который будет эквивалентно EnterActions, а затем создать еще один:

<c:DataTriggerBehavior Binding="{Binding Path=IsInBubbleGroup}" Value="False"> 
.... 
</c:DataTriggerBehavior> 

, который будет эквивалентно ExitActions? (Обратите внимание на значение False в последнем примере)

?

+1

А как насчет раскадровки вопроса? Потому что я не могу добавить startStoryboard в c: DataTriggerBehavior ... –

+0

Для этого вам нужно использовать 'ControlStoryboardAction', посмотрите http://msdn.microsoft.com/en-us/library/ff723988(v= выражение.40) .aspx – Mark

+0

спасибо вам за помощь #Mark –

1

Вот окончательный ответ, основанный на @ ответ Марки:

<i:Interaction.Behaviors> 
    <!--#Region EnterActions--> 
     <c:DataTriggerBehavior Binding="{Binding Path=IsInBubbleGroup}" Value="True"> 
      <m:ControlStoryboardAction ControlStoryboardOption="Play"> 
       <m:ControlStoryboardAction.Storyboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" Duration="0:0:0.2" To="1.1"> 
          <DoubleAnimation.EasingFunction> 
           <CubicEase EasingMode="EaseInOut" /> 
          </DoubleAnimation.EasingFunction> 
         </DoubleAnimation> 

         <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Duration="0:0:0.2" To="1.1"> 
          <DoubleAnimation.EasingFunction> 
           <CubicEase EasingMode="EaseInOut" /> 
          </DoubleAnimation.EasingFunction> 
         </DoubleAnimation> 
        </Storyboard> 
       </m:ControlStoryboardAction.Storyboard> 
      </m:ControlStoryboardAction> 
     </c:DataTriggerBehavior> 
     <!--#EndRegion EnterActions--> 

     <!--#Region ExitActions--> 
     <c:DataTriggerBehavior Binding="{Binding Path=IsInBubbleGroup}" Value="False"> 
      <m:ControlStoryboardAction ControlStoryboardOption="Stop"> 
       <m:ControlStoryboardAction.Storyboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleX)" Duration="0:0:0.1" To="1"> 
          <DoubleAnimation.EasingFunction> 
           <CubicEase EasingMode="EaseInOut" /> 
          </DoubleAnimation.EasingFunction> 
         </DoubleAnimation> 

         <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)" Duration="0:0:0.1" To="1"> 
          <DoubleAnimation.EasingFunction> 
           <CubicEase EasingMode="EaseInOut" /> 
          </DoubleAnimation.EasingFunction> 
         </DoubleAnimation> 
        </Storyboard> 
       </m:ControlStoryboardAction.Storyboard> 
      </m:ControlStoryboardAction> 
     </c:DataTriggerBehavior> 
    <!--#EndRegion ExitActions--> 
</i:Interaction.Behaviors> 
Смежные вопросы