【问题标题】:WPF Multiple triggers on the same property not working rightWPF 同一属性上的多个触发器无法正常工作
【发布时间】:2016-11-04 07:34:32
【问题描述】:

我在一个复选框的同一个属性上有 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 时,文本设置正确,但没有调用情节提要。然后我可以取消选中复选框,该故事板仍然有效。

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

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

【问题讨论】:

    标签: c# wpf xaml triggers


    【解决方案1】:

    不,感谢谁否决了我的问题,但我想出了一个解决方案。拥有单独的触发器似乎不起作用,所以我编辑了我的故事板以包含文本设置,并将我的 False 支票放入 &lt;Trigger.ExitActions&gt;

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

    这还有一个额外的好处,即在加载控件后不执行False 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      • 2015-12-02
      • 1970-01-01
      • 2012-01-04
      相关资源
      最近更新 更多