2017-12-07 20 views
0

각 ListView 항목마다 다른 애니메이션을 만들고 싶습니다.각 ListBox에서 다른 WPF 스토리 보드 애니메이션 .ItemTemplate> DataTemplate

<Window.Resources> 
    <Storyboard x:Key="myAnimation" RepeatBehavior="Forever"> 
     <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Source" Duration="0:0:2"> 
      <DiscreteObjectKeyFrame KeyTime="0:0:0"> 
       <DiscreteObjectKeyFrame.Value> 
        <BitmapImage UriSource="/img/image1.png"/> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
      <DiscreteObjectKeyFrame KeyTime="0:0:1"> 
       <DiscreteObjectKeyFrame.Value> 
        <BitmapImage UriSource="/img/image2.png"/> 
       </DiscreteObjectKeyFrame.Value> 
      </DiscreteObjectKeyFrame> 
     </ObjectAnimationUsingKeyFrames> 
    </Storyboard> 
</Window.Resources> 

<ListBox Name="SessionList" HorizontalContentAlignment="Stretch" > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Image x:Name="stateimage"> 
       <Image.Triggers> 
        <EventTrigger RoutedEvent="Loaded"> 
         <BeginStoryboard Storyboard="{StaticResource myAnimation}"> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Image.Triggers> 
      </Image> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

상기 XAML 코드 각을 listitem 동일한 애니메이션 myAnimation를 나타내는 잘 작동한다. 하지만 다른 애니메이션 (예 : Window.Resources에서 여러 Storyboards를 정의해야 함)을 표시하려면 어떻게해야합니까? Binding 속성에 따라 ViewItem ViewModel의?

는 편집 : 아래 링크 된 질문

, 나는 마침내 이런 식으로 일을 얻었다. 놀랄 만한!

<Window.Resources> 
    <Storyboard x:Key="animLOAD" RepeatBehavior="Forever">...</Storyboard> 
    <Storyboard x:Key="animPREPARED" RepeatBehavior="Forever">...</Storyboard> 
    <Style x:Key="animStyle" TargetType="{x:Type Image}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=st, Mode=OneWay}" Value="LOAD"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource animLOAD}" /> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding Path=st, Mode=OneWay}" Value="PREPARED"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource animPREPARED}" /> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 

<Image Style="{StaticResource animStyle}" /> 

답변

0

귀하의 모델이이 접근법에 얼마나 잘 접근 할 수 있는지 확실하지 않지만 일부 방법으로 사용 가능해야합니다. ,

This Question 유사한 솔루션을 제공 :

<ControlTemplate TargetType="Image"> 
    <ControlTemplate.Triggers> 
     <!-- DataTriggers --> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

편집 :

<DataTrigger Binding="{Binding Property}" Value="SomeValue">            
    <DataTrigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource Storyboard}"/> 
    </DataTrigger.EnterActions> 
</DataTrigger> 

가 나는 ControlTemplate 내에서 사용할 것 : 당신은 DataTriggers 세트를 사용할 수 있으며, 각각의 스토리 보드를 상속 ControlTemplate이 전혀 필요하지 않을 수도 있습니다.

+0

스타일 트리거가있는 솔루션을 찾아 주셔서 감사합니다! 며칠 동안 수색했지만 해결 방법을 찾지 못했고 스타일을 사용하기 위해 내 마음 속에 들어 가지 않았습니다. – dontspeak

+0

걱정할 필요가 없습니다! 다행이 너를 도울 수있어. 내 대답을 수락하십시오, 내 + rep 수정이 필요합니다. – Jack