2011-03-08 94 views
6

我有一个名为IsLoginWrong的布尔属性,如果IsLoginWrong为true,我想要播放故事板动画。 (IsLoginWrong做了一个OnPropertyChanged事件,所以我知道绑定是好的)但是我的语法很难。这甚至可能不是正确的,但我认为datatriggers只能住在样式...WPF/Silverlight:如何在MVVM中触发Storyboard动画?

<UserControl.Style> 
    <Style> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True"> 
       <DataTrigger.EnterActions> 
        <BeginStoryboard Storyboard="{StaticResource LoginWrong}"/> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</UserControl.Style> 

但这抛出异常“的风格故事板树不能指定的TargetName” ...... beause风格canno参考特别是项目..真棒。所以我该如何做我想做的事? (播放动画如果MVVM一个布尔变化)

感谢

+0

回顾5年后,mvvm可能是我职业生涯中最大的浪费时间。最好在代码中这样做。 – foreyez 2016-01-20 00:10:48

回答

11

在你不能指故事板名称的风格。所以,我得到它的工作方式是将实际的作风内推你的故事板:

<UserControl.Style>  
    <Style>   
     <Style.Triggers>    
      <DataTrigger Binding="{Binding Path=IsLoginWrong}" Value="True">      
       <DataTrigger.EnterActions>      
        <BeginStoryboard> 
         <Storyboard> 
          .... PUT YOUR ACTUAL STORY BOARD IN HERE ... 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.EnterActions>    
      </DataTrigger>   
     </Style.Triggers>  
    </Style> 
</UserControl.Style> 

现在DataTriggers可以被放入样式或控制模板,所以有可能是与控制模板,这样做一个更好的方式。但这是我暂时想出来的。