WPF在同一属性上的多个触发器无法正常工作

时间:2016-11-03 21:55:07

标签: c# wpf xaml triggers

我在复选框的同一属性上有2个触发器,但它不能正常工作。

<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时,文本被设置,故事板被调用就好了。但是当我检查CheckBox时,文本设置正确,但没有调用故事板。然后我可以取消选中CheckBox,那个故事板仍然有用。

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

编辑:我的故事板是向后的,所以这是第一个不调用故事板的触发器,而不是第二个

1 个答案:

答案 0 :(得分:1)

不,不管是谁支持我的问题,但我想出了一个解决方案。单独的触发器似乎不起作用,所以我编辑了我的故事板以包含文本设置,并将我的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部分。