2016-11-03 57 views
-1

我在复选框的同一属性上有两个触发器,并且它不能正常工作。WPF同一属性上的多个触发器不能正常工作

<ControlTemplate.Triggers> 

    <Trigger Property="IsChecked" Value="False"> 
     <Setter TargetName="InnerText" Property="Text" Value="False" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource OnUnCheck}"/> 
     </Trigger.EnterActions> 
    </Trigger> 

    <Trigger Property="IsChecked" Value="True"> 
     <Setter TargetName="InnerText" Property="Text" Value="True" /> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource OnCheck}"/> 
     </Trigger.EnterActions> 
    </Trigger> 

</ControlTemplate.Triggers> 

当我取消选中复选框,文本被设置,故事板被调用就好了。但是当我检查CheckBox时,文本被正确设置,但故事板不被调用。然后,我可以取消选中复选框,该故事板仍然有效。

然后,如果我交换触发器顺序,那么Value="True"是第一个,只有那个故事板才起作用。在这两种情况下,文本都设置得很好,并确认这两个故事板都可以工作。它只是第二个触发器中的故事板在两种情况下都不会被调用。我需要使用MultiTrigger ...吗?

编辑:我的故事板比较落后,所以这是第一个触发没有要求故事板,而不是第二

回答

1

不感谢谁downvoted我的问题,但我想出了一个解决方案。拥有独立的触发器似乎没有工作,所以我编辑我的故事板包含文本的设置,并把我的False支票存入一个<Trigger.ExitActions>

<Trigger Property="IsChecked" Value="True"> 
    <Trigger.EnterActions> 
     <BeginStoryboard Storyboard="{StaticResource OnCheck}"/> 
    </Trigger.EnterActions> 
    <Trigger.ExitActions> 
     <BeginStoryboard Storyboard="{StaticResource OnUnCheck}"/> 
    </Trigger.ExitActions> 
</Trigger> 

这也有不执行False一部分额外的好处一旦控件加载完成。